0

だから私はこのエラーが発生しています

{"'drpButton1' has a SelectedValue which is invalid because it does not exist in the list of items.\r\nParameter name: value"}

私が読むことができるすべてから、これは、DropDownList に既存のアイテムがあったか、新しいデータバインドされたアイテムにない選択されたインデックスまたは値があったためです。

しかし、問題は、オブジェクトに既存のアイテムがないことを保証できることです。また、範囲外の可能性のあるインデックスが選択されていないことも自信を持って言えます。

.databind() 呼び出しの直前の DropDownList オブジェクトは次のようになります。

databind() 呼び出し前の DropDownlList オブジェクト

ここでは、すべての爆発を引き起こした databind() 呼び出しの直後です。 ここに画像の説明を入力

私のリストオブジェクトには7つのアイテムが含まれており、特にデータバインドメソッドがランダムに選択することを決定したアイテムが含まれています.

しかし、これがキッカーです。文字通り8つのドロップダウンをまったく同じデータで埋め、最初のドロップダウンで問題なく動作します。2つ目が爆発する理由がわかりません。

編集:バインディングを行うコードは次のとおりです。

以下は load メソッドの抜粋です。最初の呼び出しは成功し、2 番目の呼び出しは失敗しますが、常に失敗するわけではありません。

       private void LoadShortCodeDropDownData()
        {
            // Initilization junk to get the resultList to use.

   base.LoadListDropDown(drpButton0, (IList)resultList, "DeviceShortCodeIndexID", "DeviceShortCodeName", select);
                MessageTextEnabled(drpButton0);

                base.LoadListDropDown(drpButton1, (IList)resultList, "DeviceShortCodeIndexID", "DeviceShortCodeName", select);
                MessageTextEnabled(drpButton1);
}

    protected void LoadListDropDown(DropDownList dropDown, IList list, string valueField, string textField, string insertItem)
    {
        LoadListDropDown(dropDown, list, valueField, textField);
        //dropDown.Items.Insert(0, new ListItem(insertItem, ""));
    }

protected void LoadListDropDown(DropDownList dropDown, IList list, string valueField, string textField)
        {
            dropDown.DataSource = list;
            dropDown.DataValueField = valueField;
            dropDown.DataTextField = textField;
            dropDown.DataBind();
        }

EDIT2:ここでの本当の質問は、データバインドがどの項目を選択するのかということだと思いますか? データバインドされた最初のドロップダウンがリストの最初の値をランダムに選択し、2 番目のドロップダウンが何らかの理由でリストの最後の値にバインドしようとすることに気付きました。

4

2 に答える 2

0

これはページの最初の読み込み時ですか、それともポストバック後に発生していますか? それがポストバックの場合、SelectedIndex == 0デフォルトで十分に機能する可能性があるためです。

これで問題が解決するとは保証できませんが、追加してみてください

dropDown.SelectedIndex = -1; 

... 2 番目のLoadListDropDown過負荷の一番上まで。

于 2013-02-18T22:06:54.123 に答える