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 に値があるかどうかを確認します。値としてpoliceIdがある場合は、これらの2行を追加してバインドします。

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