[英]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.