我有一个DropDownList
,它绑定到数据库。 DropDownList
列表中的值可能类似于:
Bedroom1
Bedroom2
Kitchen1
Kitchen2
如果这些项目在DropDownList
中列出,选择了“Bedroom2”,则选择“Bedroom1”本身,但选择“Kitchen2”后,选择“Kitchen1”。
此DropDownList
进一步绑定到另一个DropDownList
。我为DropDownList
设置了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
中检索到相同的位置。
这是一个非常严重的问题,有人可以帮我解决这个问题吗?
答案 0 :(得分: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