DropDownList不是来自SQL数据库的人口

时间:2014-05-27 17:07:07

标签: c# asp.net sql webforms

我错过了什么。我试图从SQL数据库中的表填充下拉列表。我在表中有几列,但根据从文本框输入的值,只需要2,1表示值,1表示文本。我的测试页面我刚给了会话变量一个来自我的表的值。我测试了我的SQL连接并且变化了。我已经在SQL中测试了我的select语句,并且变化了我只收到了我想要的数据。

有人可以告诉我我做错了什么。

下拉列表是一个简单的asp DDL:

<asp.DropDownList ID="DD1" runat="server"></asp.DropDownList>

背后的代码是:

protected void Page_Load(object sender, EventArgs e)
{
   string a = Session["Test"] as string;
   string IDSel = "SELECT Value, Text FROM DDL1 WHERE Value = '@Value'";
   SqlConnection IDcon = new SqlConnection(connection string);
   IDcon.Open();
   SqlDataAdapter adapter = new SqlDataAdapter(IDSel, IDcon);
   adapter.SelectCommand.Parameters.AddWithValue("@Value", a);
   DataSet IDds = new DataSet();
   adapter.Fill(IDds);
   try
   {
      DD1.DataSource = IDds;
      DD1.DataTextField = "Text";
      DD1.DataValueField = "Value";
      DD1.DataBind();
   }
   catch
   {
      Response.Write("No data found");
   }
   IDcon.Close();
}

我的母版页包含:

    Session["Test"] = //a value from my table

我添加了

Response.Write(a);

在不同的点,我得到的表值显示在我预期的位置,我从未收到任何数据。 我找到的一个例子让我添加

DD1.BindData();

DD1.DataSource行之后,但导致有关我的参数值的错误消息。我已经运行了调试,它运行得很干净。

3 个答案:

答案 0 :(得分:2)

试试这个

DD1.DataSource = IDds.Tables[0];

答案 1 :(得分:1)

如果将参数占位符放在单引号之间,则将其视为字符串文字,而不是参数

string IDSel = "SELECT Value, [Text] FROM DDL1 WHERE Value = @Value";

另外为了避免与保留关键字混淆,我认为你需要在方括号之间放置TEXT一词

答案 2 :(得分:1)

添加sql参数的正确方法

 adapter.SelectCommand.Parameters.AddWithValue("Value", a);

string IDSel = "SELECT Value, Text FROM DDL1 WHERE Value = @Value";