我必须在选择下拉列表时在文本框中显示值。我使用数据集从db获取值。代码如下。给我一个合适的解决方案。谢谢。
代码:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DataSet1TableAdapters.TextBoxTableTableAdapter tx;
tx = new DataSet1TableAdapters.TextBoxTableTableAdapter();
DataTable dt = new DataTable();
dt = tx.GetstudData(int.Parse(DropDownList1.SelectedValue));
foreach (DataRow row in dt.Rows)
{
TextBox1.Text = (row["FirstName"]); // error shown here
TextBox2.Text = (row["SecondName"]); // error shown here
}
}
dt包含名字和姓氏值。在选择学生ID时,应在文本框1和文本框2中显示适当的值。
SQL查询:
SELECT FirstName, SecondName FROM TextBoxTable WHERE (Id = @Id)
来源:
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</div>
数据库:
答案 0 :(得分:3)
您可能想要这样做:
foreach (DataRow row in dt.Rows)
{
TextBox1.Text = (row["FirstName"]);
TextBox2.Text = (row["SecondName"]);
}
答案 1 :(得分:3)
将您的代码更改为:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DataSet1TableAdapters.TextBoxTableTableAdapter tx;
tx = new DataSet1TableAdapters.TextBoxTableTableAdapter();
DataTable dt = new DataTable();
dt = tx.GetstudData(int.Parse(DropDownList1.SelectedValue));
foreach (DataRow row in dt.Rows)
{
TextBox1.Text = (row["FirstName"].ToString());
TextBox2.Text = (row["SecondName"].ToString());
}
}
文本框的名称与asp文件中的名称不同。 C#是一种区分大小写的语言。
编辑:您必须转换它。一个简单的.ToString()应该这样做。尽量不要改变主题的完整主题。你应该打开一个新问题...因为这会打破所有正确的答案。
答案 2 :(得分:1)
studentId是独一无二的。 DownDropList包含Studentid。一个学生有一个名字
if(DropDownList1.SelectedValue !="" && dt.Rows.Count()>0)
{
txtFirstname.Text= String.IsNullOrWhiteSpace(dt.Rows[0]["FirstName"]) ? "" : dt.Rows[0]["FirstName"];
txtlastName.Text= String.IsNullOrWhiteSpace(dt.Rows[0]["LastName"]) ? "" : dt.Rows[0]["LastName"];
}
else
{
TextBox1.Text="";
TextBox2.Text="";
}