我有一个包含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相同。难道不应该有更简单的方法吗?
答案 0 :(得分:0)
使用此代码:
ddl.SelectedValue = Convert.ToInt32(dt.Rows[0]["TypeID"]);
或
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(dt.Rows[0]["TypeDesc"]));