无法将类型'object'隐式转换为'string'。存在显式转换(您是否错过了演员?)

时间:2014-10-16 09:39:00

标签: c# asp.net database textbox

我必须在选择下拉列表时在文本框中显示值。我使用数据集从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>

数据库:

enter image description here

3 个答案:

答案 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="";
 }