比如我們在做無限分類的時候 往往想讓數據如上圖所顯示,我們又該怎麼做呢。
剛上讓面的DataSet寫了些格式化代碼,現在相信大家都想知道Ilist又該怎麼操作對吧?
泛型的功能 強大我在這裡就不說了,現在說重點,主要有兩種方法實現,
一,把Ilist得的數據轉為 DataSet的,這樣你又可以重新回到熟悉的操作了
IList 轉 DataSet 類(這個是我引用別人的 ^ ^)
復制代碼 代碼如下:
public static DataSet ConvertToDataSet<T>(IList<T> list)
{
if (list == null || list.Count <= 0)
{
return null;
}
DataSet ds = new DataSet();
DataTable dt = new DataTable(typeof(T).Name);
DataColumn column;
DataRow row;
System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (T t in list)
{
if (t == null)
{
continue;
}
row = dt.NewRow();
for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
{
System.Reflection.PropertyInfo pi = myPropertyInfo[i];
string name = pi.Name;
if (dt.Columns[name] == null)
{
column = new DataColumn(name, pi.PropertyType);
dt.Columns.Add(column);
}
row[name] = pi.GetValue(t, null);
}
dt.Rows.Add(row);
}
ds.Tables.Add(dt);
return ds;
}
然後
復制代碼 代碼如下:
DataSet ds = ConvertToDataSet(b.ListColumn());
看,又回來熟悉的操作了吧,但是,這樣做我們啟不是走彎路了,為啥不直接用 DataSet就得了?沒錯,我們走彎路了............我想用 IList啊,不想轉來轉去的,難道就沒有好的辦法?
哈哈,答案肯定是有的,也是最簡單的,往往是初學的朋友不懂解IList才現在種種疑惑,
現在講IList 對象類的操作
還是上面的例子
比如當查詢得一個
復制代碼 代碼如下:
BLL b = new BLL();
b.ListColumn();
我們要綁定上圖所示的只需這樣做
復制代碼 代碼如下:
IList<Qzzm.Model.ColumnInfo> list = new List<Qzzm.Model.ColumnInfo>();
foreach (Qzzm.Model.ColumnInfo m in b.ListColumn())
{
if (m.Depth.ToString() != "1")
{
m.ColumnName = StringHelper.StringOfChar(Convert.ToInt32(m.Depth) - 1, " ") + "├ " + m.ColumnName + "<br>";
}
list.Add(m);
}
DataList1.DataSource = list;
DataList1.DataBind();
StringHelper還是上面的那個。經過這樣的簡單處理,我們就可以格式化 欄目名稱了再分下DataList的綁定效果圖,完畢!算是菜鳥與菜鳥之間的交流吧。