说实话,这是我第一次看到这样的错误
The 'SelectedIndex' and 'SelectedValue' attributes are mutually exclusive
这是发生错误的地方。它发生在数据绑定。
protected void FillDropdown(DropDownList ddl)
{
using (var connAdd = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"))
{
connAdd.Open();
var sql = "Select policeid from PoliceAccount where status ='available' and handle ='offcase' and postedto='" + ddllocation.SelectedValue + "'";
using (var cmdAdd = new SqlDataAdapter(sql, connAdd))
{
DataSet ds2 = new DataSet();
cmdAdd.Fill(ds2);
ddl.Items.Clear();
ddl.DataSource = ds2;
//error occurs here
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("Police ID", ""));
ddl.SelectedIndex = 0;
}
}
}
我不太确定他们为什么会说这样的话。我在下拉列表中使用了这个FillDropdown。
protected void ddlpid1_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlpid1.SelectedIndex > 0)
{
Session["pid1"] = ddlpid1.SelectedValue;
ListItem removeItem2 = ddlpid2.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
ListItem removeItem3 = ddlpid3.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
ListItem removeItem4 = ddlpid4.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
ListItem removeItem5 = ddlpid5.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
}
else if (ddlpid1.SelectedItem.Text.Equals("Police ID"))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid2.SelectedValue = (String) Session["pid2"];
ddlpid2_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid3.SelectedValue = (String) Session["pid3"];
ddlpid3_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid4.SelectedValue = (String) Session["pid4"];
ddlpid4_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid5.SelectedValue = (String) Session["pid5"];
ddlpid5_SelectedIndexChanged(this, EventArgs.Empty);
}
}
我多次查看我的代码,我看到selectedindex和选定值发生冲突。它们都是单独的功能。
答案 0 :(得分:5)
在数据绑定之前将SelectedIndex
设置为-1
它应该有帮助
答案 1 :(得分:2)
在ASP.NET Forums - The 'SelectedIndex' and 'SelectedValue' attributes are mutually exclusive上已经提出了类似的问题。
SelectedIndex
事件中同时设置SelectedValue
和Page_Load
属性的原因。
答案 2 :(得分:2)
如果在DataBind()调用
之前设置了selectedValue,也会发生这种情况答案 3 :(得分:0)
检查数据集ds2是否具有值。 如果它有一些policeId作为值,则添加这两行并绑定它。
ddl.DataSource = ds2;
ddl.DataTextField = "policeid";
ddl.DataValueField = "policeid";
ddl.DataBind();
答案 4 :(得分:0)
你可以在
之前添加它ddlst.SelectedIndex = -1;
if (ddlst.SelectedValue.Length>0)
{
ddlst.SelectedValue.Remove(0);
}