網頁

2010年9月1日 星期三

ListItem的資料Add方式

有ListItem的Control都可以用DataBind的方式將資料繫結
ddl.DataSource = ds.Tables["T_Zip"];
ddl.DataTextField = "Zip_Name";
ddl.DataValueField = "Zip_Code";
ddl.DataBind();

上述的方式當然指的是一個相當簡單並且直覺的資料


倘若,現在DropDownList或是ListBox所要呈現的資料,是一個需要加工過的,顯示文字或是Value會經過處理,

而與原來取得的資料不同時,可能就不方便用上面的方式來做(也不是不能,只是比較不那麼有效率)

或是資料量相當大,如果是使用一般常見的方法
for(int i=0; i<tmpDataTable.Count; i++)
{
ListIem items = new ListItem();   
items.Text = tmpDataTable.Rows[i].["Column1"].ToString().Trim();   
items.Value = tmpDataTable.Rows[i].["Column2"].ToString().Trim();   
DropDownList1.Items.Add(items);
}

上面的方式就不是那麼有效率,可以試著改用下面的方法


使用 AddRange 方法,加入 items 參數指定的 ListItem 物件陣列中的項目。這可以讓您以一個步驟將多個 ListItem 物件加入集合中。

如果是使用ASP.NET 3.5的環境下,就可以用List<ListItem>,然後以AddRange方法來做
List<ListItem> ListZip = new List<ListItem>();
foreach (var item in q)
{
ListItem li = new ListItem(item.Zip_Name.Trim(), item.Zip_Code.Trim());
ListZip.Add(li);
}
ddl.Items.AddRange(ListZip.ToArray());

如果還是ASP.NET 2.0的環境,也可以用AddRange方法,並且搭配ListItem[]
ListItem[] ListItemArray = new ListItem[ds.Tables["T_Zip"].Count()];   
for (int i = 0; i < ds.Tables["T_Zip"].Count; i++)   
{   
ListItemArray[i] = new ListItem(   
ds.Tables["T_Zip"].Rows[i].["Zip_Name"].ToString().Trim(),   
ds.Tables["T_Zip"].Rows[i].["Zip_Code"].ToString().Trim()   
);   
}   
ddl.Items.AddRange(ListItemArray);

多多使用有效率的方式來處理。




1 則留言: