2
 drpDwnLstBillContact.SelectedValue = billContactId.ToString();
 drpDwnLstRegContact.SelectedValue = regContactId.ToString();
 drpDwnLstTechContact.SelectedValue = techContactId.ToString();

ドロップダウンの selectedvalue プロパティを設定しようとしていますが、問題があります。

変数の値は次のとおりです。

billContactId=786867;
regContactId=3487347;
techContactId=37463;

問題は最初の行にあります。billContactIdが drpDwnLstBillContact の selectedvalue プロパティに割り当てられ、2 行目でも regContactId が drpDwnLstRegContact の selectedvalue プロパティに割り当てられます。ただし、最初のドロップダウン (drpDwnLstBillContact) に割り当てられると、選択された値も regContactId に設定されます。2 行目のコードが最初の行に影響するのはなぜですか?

4

4 に答える 4

4

問題と解決策を見つけました。

FillDropDowns メソッドでは、ListItem を 1 つだけ作成して各ドロップダウンに追加したので、ドロップダウンの selectedvalue プロパティを変更すると、リスト項目が変更され、ドロップダウンのすべてのリスト項目も変更されます。これで、ドロップダウンごとに個別の ListItem オブジェクトを作成し、問題を解決しました。

古いコード

 foreach (string[] contactData in data)
        {
            ListItem li = new ListItem(contactData[0], contactData[1]);

            drpDwnLstRegContact.Items.Add(li);
            drpDwnLstTechContact.Items.Add(li);
            drpDwnLstBillContact.Items.Add(li);
        }

新しいコード

 foreach (string[] contactData in data)
        {
            ListItem li = new ListItem(contactData[0], contactData[1]);
            ListItem li1 = new ListItem(contactData[0], contactData[1]);
            ListItem li2 = new ListItem(contactData[0], contactData[1]);
            drpDwnLstRegContact.Items.Add(li);
            drpDwnLstTechContact.Items.Add(li1);
            drpDwnLstBillContact.Items.Add(li2);
        }
于 2011-06-30T14:29:38.557 に答える
2

最初のものには影響しません。ドロップダウン リストはアトミックであり、この問題については聞いたことがありません。コントロールが別の値に再割り当てされていないコードの他の場所は確かですか?

于 2011-06-30T12:21:57.497 に答える
1

何が問題なのかはっきりとわかりません。ただし、最初のアイテムが常に選択されるようDropDownListにするすべてのイベントを埋めていると思います。Page.Load

Page.Loadハンドラーで次のことを試してください。

if (!Page.IsPostBack)
{
    FillDropDownList();
}
于 2011-06-30T12:22:08.460 に答える