将项目插入下拉列表

时间:2009-09-08 07:38:08

标签: c# asp.net data-binding

我想根据dropdownlist1的选定项目(来自表1)显示我的dropdownlist2中的项目(来自表2)。

在下面,我只是尝试根据dropdownlist1中的值从table2中选择lang列值。((只是插入dropdownlist1))  是正确的代码......?

    SqlDataAdapter da = new SqlDataAdapter(
       "Select lang from table2 whereheatre=@d",connect.con());
    da.SelectCommand.Parameters.AddWithValue("@d", DropDownList1.SelectedItem.Text);
    DataSet ds=new DataSet();
    da.Fill(ds,"l1");
    DropDownList2.Items.Add(ds);

还有其他办法吗?

3 个答案:

答案 0 :(得分:2)

要将新值添加到现有下拉列表中,您应该手动添加新行:

foreach (DataRow dr in ds.Tables[0].Rows)
{
    DropDownList2.Items.Add(new ListItem(dr["TextField"].ToString(), dr["ValueField"].ToString()));
}

或者,在将它们绑定到您的下拉列表之前,您应该merge datatables

答案 1 :(得分:0)

如果您只希望使用您刚才提到的查询后返回的值填充DropDownList2,那么您应该只对其进行数据绑定。

SqlDataAdapter da = new SqlDataAdapter(
   "Select lang from table2 whereheatre=@d",connect.con());
da.SelectCommand.Parameters.AddWithValue("@d", DropDownList1.SelectedItem.Text);
DataSet ds=new DataSet();

DropDownList2.DataSource = ds;
DropDownList2.DataTextField = "lang";
DataBind();

更重要的是,您还可以通过这种方式向下拉列表中添加值字段(但您必须修改sql查询,以便返回2列):

"Select lang,colId from table2 whereheatre=@d"

DropDownList2.DataSource = ds;
DropDownList2.DataTextField = "lang";
DropDownList2.DataValueField= "colId ";
DataBind();
祝你好运! ;)

答案 2 :(得分:0)

尝试在dropdownlist one上连接SelectedIndexChanged事件,然后绑定dropdownlist 2。我假设您使用的是Asp.net ...

这将在你的aspx页面中:

<asp:DropDownList ID="ddlOne"runat="server" OnSelectedIndexChanged="ddlOne_OnSelectedIndexChanged"
                                AutoPostBack="true" />

<asp:DropDownList ID="ddlTwo"runat="server" DataTextField="lang" DataValueField="colId"  />

这将在你的代码隐藏中:

protected void ddlOne_OnSelectedIndexChanged(object sender, EventArgs e)
 {
       // Go get your data here then bind to it..
       ddlTwo.DataSource = "Whatever datasource you want here";
       ddlTwo.DataBind();
 }