0

我有一个DropDownList绑定到数据库的 . 列表中的值DropDownList可能类似于:

卧室1
卧室2
厨房1
厨房2

当这些项目在列表中DropDownList时,选择了“Bedroom2”,选择了“Bedroom1”本身,但选择了“Kitchen2”,选择了“Kitchen1”。

DropDownList进一步绑定了另一个DropDownList。我已经为这两个DropDownLists 设置了 AutoPostBack。我已经从后面的代码中绑定了数据源。

可能出了什么问题?

数据绑定代码:

SqlDataAdapter myda = new SqlDataAdapter("Select * FROM " + Label3.Text, con);
DataSet ds = new DataSet();
myda.Fill(ds, "Table");
LOC_LIST2.DataSource = ds.Tables[0];
LOC_LIST2.DataTextField = ds.Tables[0].Columns["Location_Instance"].ColumnName.ToString(); 
LOC_LIST2.DataValueField=ds.Tables[0].Columns["Location_Type"].ColumnName.ToStri??ng(); 
LOC_LIST2.DataBind(); 
LOC_LIST2.Items.Insert(0, new ListItem("---Choose One Location---", "-1"));

因此,在上面的代码中 Location_Instance 是添加并存储在数据库中的位置(Location_Type)的数量,并且在上面检索到相同的数量DropDownList

这是一个非常严重的问题,有人可以尽快帮助我吗?

4

1 回答 1

0

如果您在回发后在 DropDownList 中获得重复项,请在设置 DropDown 的 DataSource 之前尝试将其添加到绑定代码中:

LOC_LIST2.Items.Clear();

这将从 DropDownList 中清除所有项目,然后您当前的绑定代码将运行并重新添加所需的项目。因此,新代码将显示为:

SqlDataAdapter myda = new SqlDataAdapter("Select * FROM " + Label3.Text, con);
DataSet ds = new DataSet();
myda.Fill(ds, "Table");
LOC_LIST2.Items.Clear();
LOC_LIST2.DataSource = ds.Tables[0];
LOC_LIST2.DataTextField =     ds.Tables[0].Columns["Location_Instance"].ColumnName.ToString(); 
LOC_LIST2.DataValueField=ds.Tables[0].Columns["Location_Type"].ColumnName.ToStri??ng(); 
LOC_LIST2.DataBind(); 
LOC_LIST2.Items.Insert(0, new ListItem("---Choose One Location---", "-1"));

此外,在旁注中,您可能希望查看使用参数化 SQL 语句来帮助防止诸如 SQL 注入之类的事情。来自 MSDN 的示例:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.selectcommand.aspx

于 2012-08-14T20:31:30.643 回答