簡體   English   中英

DropDownList無法從SQL數據庫填充

[英]DropDownList not population from SQL Database

我想念一些東西。 我正在嘗試從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);

在不同的點,我得到的表值顯示在我期望的位置,但我從未收到任何數據。 我發現有1個示例讓我添加

DD1.BindData();

就在DD1.DataSource行之后,但這導致了有關我的參數值的錯誤消息。 我已經運行了調試,它運行得很干凈。

嘗試這個

DD1.DataSource = IDds.Tables[0];

如果將參數占位符放在單引號之間,它將被視為字符串文字,而不是參數

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

另外,為了避免與保留關鍵字的混淆,我認為您需要將TEXT一詞放在方括號之間

它是添加sql參數的正確方法

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM