C# dropdownlist未从OnSelectedIndexChanged上的表中获取值
我试图在dropdownlist值更改时从数据库表中获取值,并在文本框中显示它们。从下拉列表中选择任何值时,页面将刷新,但文本框中不会显示任何值,代码如下: Default.aspxC# dropdownlist未从OnSelectedIndexChanged上的表中获取值,c#,asp.net,C#,Asp.net,我试图在dropdownlist值更改时从数据库表中获取值,并在文本框中显示它们。从下拉列表中选择任何值时,页面将刷新,但文本框中不会显示任何值,代码如下: Default.aspx <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="t
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="<Select Subject>" Value="0" />
</asp:DropDownList>
您可以尝试以下方法:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if(DropDownList1.SelectedValue !="-1"){
string ddl2value = DropDownList1.SelectedValue.ToString();
SqlConnection objConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand objCmd2;
SqlDataReader objRdr2;
objConn2.Open();
objCmd2 = new SqlCommand("SELECT code, rank, address FROM agen_mast WHERE name = " +
"'" + ddl2value + "'", objConn2);
objRdr2 = objCmd2.ExecuteReader();
while (objRdr2.Read())
{
TextBox9.Text = (string)objRdr2["code"].ToString();
TextBox8.Text = (string)objRdr2["address"].ToString().ToUpper();
TextBox10.Text = (string)objRdr2["rank"].ToString().ToUpper();
}
objRdr2.Close();
objConn2.Close();
}
}
并在
.aspx
侧的下拉列表1
中添加一个带有值的虚拟列表项
,作为第一项。顺便说一下,请确保将正确的参数发送到SqlCommand
。现在,您正在查找一条名为的记录
=0
。另外,ddl2Value
已经是string
类型,因此您不需要在SqlCommand
中调用ToString()
,您可以尝试以下操作:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if(DropDownList1.SelectedValue !="-1"){
string ddl2value = DropDownList1.SelectedValue.ToString();
SqlConnection objConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand objCmd2;
SqlDataReader objRdr2;
objConn2.Open();
objCmd2 = new SqlCommand("SELECT code, rank, address FROM agen_mast WHERE name = " +
"'" + ddl2value + "'", objConn2);
objRdr2 = objCmd2.ExecuteReader();
while (objRdr2.Read())
{
TextBox9.Text = (string)objRdr2["code"].ToString();
TextBox8.Text = (string)objRdr2["address"].ToString().ToUpper();
TextBox10.Text = (string)objRdr2["rank"].ToString().ToUpper();
}
objRdr2.Close();
objConn2.Close();
}
}
并在.aspx
侧的下拉列表1
中添加一个带有值的虚拟列表项
,作为第一项。顺便说一下,请确保将正确的参数发送到SqlCommand
。现在,您正在查找一条名为的记录
=0
。另外,ddl2Value
已经是string
类型,所以您不需要在SqlCommand
中调用ToString()
。然而,如果我记得它是正确的,它应该是选定的文本应具有选定的值。此外,调试并查看在选择更改后您在where子句中放置的值,并确保表中至少有一个匹配的列值。DropDownList1
中只有一个元素,对吗?如果只有1个元素,那么当你点击时,索引实际上不会改变。我已经看了一会儿asp.net了。然而,如果我记得它是正确的,它应该是选定的文本应具有选定的值。此外,调试并查看在选择更改后您在where子句中放置的值,并确保表中至少有一个匹配的列值。DropDownList1
中只有一个元素,对吗?如果只有1个元素,那么单击时索引实际上不会更改。