【问题标题】:insert data from a DataTable into a dropdown将 DataTable 中的数据插入下拉列表
【发布时间】:2012-10-31 16:44:18
【问题描述】:
我想用datatable填写dropdown
bcoz 我已经在 bal 中有一个方法 GetCate(),它返回 datatable,现在想用一些 datasource 和 databind 脚本将数据动态填充到 ddl 中,这可能吗???
为什么不能将数据表分配到下拉列表中???
public void BindCateDDL()
{
DataTable dt = new BALCate().GetCate();
ddl_filter_category_id.DataSource = dt;
ddl_filter_category_id.DataBind();
}
这是正确的做法吗???
【问题讨论】:
标签:
asp.net
sql-server
datatable
dataset
datasource
【解决方案1】:
有几种方法可以做到这一点:
1) 在每次迭代中创建一个新的listItem,添加详细信息并将其添加到 DDL:
public void BindCateDDL()
{
//DropDownList ddl;
DataTable dt = new BALCate().GetCate();
foreach (DataRow dr in dt.Rows)
{
ListItem l = new ListItem();
l.text = dr["colForName"].ToString();
l.value = dr["colForValue"].ToString();
ddl.items.add(l);
}
}
2) 将数据表作为数据源添加到DropDownList 并设置DataTextField 和DataValueField 属性:
public void BindCateDDL()
{
//DropDownList ddl;
DataTable dt = new BALCate().GetCate();
ddl.DataSource = dt;
ddl.DataTextField = "colForName";
ddl.DataValueField = "colForValue";
ddl.DataBind();
}
【解决方案2】:
您所要做的就是将下拉列表绑定到您的数据表,如下所示;
ddl.DataTextField = "ColumnName1";
ddl.DataValueField = "ColumnName2"
ddl.DataSource = dt;
ddl.DataBind()