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);
多多使用有效率的方式來處理。
作者已經移除這則留言。
回覆刪除