5

老实说,这是我第一次看到这样的错误

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 和 selected 值发生冲突。所有这些都作为单独的功能单独工作。

4

5 回答 5

6

在将数据绑定设置SelectedIndex-1它之前应该会有所帮助

于 2013-08-06T04:20:18.650 回答
3

如果您在调用 DataBind() 之前设置了 selectedValue,也会发生这种情况

于 2015-04-15T19:19:17.840 回答
2

ASP.NET 论坛上已经提出了一个类似的问题 - 'SelectedIndex' 和 'SelectedValue' 属性是互斥的

在事件中同时设置SelectedIndexSelectedValue属性的原因Page_Load

于 2014-12-11T07:44:22.927 回答
1

你可以在之前添加这个

ddlst.SelectedIndex = -1;
if (ddlst.SelectedValue.Length>0)
{
    ddlst.SelectedValue.Remove(0);
}
于 2016-07-13T14:27:50.253 回答
0

检查数据集 ds2 是否有值。如果它有一些policyId作为值,则添加这两行并绑定它。

ddl.DataSource = ds2;
ddl.DataTextField = "policeid";
ddl.DataValueField = "policeid";
ddl.DataBind();
于 2013-08-06T06:34:10.460 回答