下拉列表从数据库中选择值

时间:2014-05-17 00:51:37

标签: asp.net

我有一个包含TypeID列的表格。此TypeID列是另一个表的外键,其中填充了类型名称。

在我的aspx页面上,我有一个下拉列表,其selected字段我想设置为Type Name对应的TypeID

令人困惑的部分是我正在查询只有TypeID的表格所以我不能说下面的内容,因为我在这个表格中没有TypeDesc

ddl.SelectedItem.Text = dtType.Rows[0]["TypeDesc"].ToString();

我连接数据库以填充下拉列表的方式

    string sqlType = "SELECT TypeID, TypeDesc FROM .......";

    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ConnectionString))
    {
            SqlCommand comType = new SqlCommand(sqlType, con);
            comType.CommandType = CommandType.Text;
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataTable dtType = new DataTable();
            da.Fill(dtType);
            con.Close();
            ddl.DataTextField = "TypeDesc";
            ddl.DataValueField = "TypeID";
            ddl.DataSource = dtType;
            ddl.DataBind();
    }

在上面的代码运行之后,ddl成功填充了项目。这是aspx方面的ddl:

<asp:DropDownList ID="ddl" runat="server" />

在所有这些结束之后,我再次使用不同的查询查询数据库,该查询从只有TypeID的表中选择(作为上述类型表的外键)。

执行此新查询后,我有一个TypeID。我希望ddl将所选项目设为Value与此TypeID匹配的项目。

我可以使用

来完成所有这些工作
ddl.SelectedIndex = Convert.ToInt32(dt.Rows[0]["TypeID"])-1;

但是假设ddl成员索引与TypeID相同。难道不应该有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

使用此代码:

ddl.SelectedValue = Convert.ToInt32(dt.Rows[0]["TypeID"]);

ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(dt.Rows[0]["TypeDesc"]));