1

Select1、Select2、...、Select13 などの ID を持つ HtmlSelect (a'la asp.net の DropDownList) があります。項目の静的リストを作成します。

for (int i = 0; i < tab.Length; i++)
  _listItems[i] = (new ListItem { Text = tab[0, i], Value = tab[1, i], Selected=false });

次に、各 HtmlSelect コントロールにそのリストを割り当て、新しい SelectedIndex プロパティを割り当てます。

var HtmlSelectControl = ((HtmlSelect)this.FindControl(String.Format("Select{0}", controlNumber)));

HtmlSelectControl.Items.AddRange(_listItems);
HtmlSelectControl.SelectedIndex = controlNumber - 1;

問題は、Select2 コントロール (たとえば =1) の SelectedIndex プロパティを設定すると、Select1 コントロールが同じ SelectedIndex プロパティ (インデックス =0) を持つことです。なんで ?

4

1 に答える 1

0

すべての選択コントロールを同じ項目リストにバインドしています。これは、選択コントロールに SelectedIndex を設定するときに選択済みとして設定する項目です。すべての選択コントロールは同じ項目リストへの参照を持っているため、そのうちの 1 つで SelectedIndex プロパティを設定すると、他のすべてでそれが設定されます。

次の 2 つのスニペットを比較してください。最初のものは、同じリストにバインドしているあなたのものと同じです:

        var _listItems = new List<ListItem>{ new ListItem("Item1"), new ListItem("Item2"), new ListItem("Item3")};
        for (int controlNumber = 1; controlNumber < 4; controlNumber++) {
            var HtmlSelectControl = ((HtmlSelect) this.FindControl(String.Format("Select{0}", controlNumber)));
            HtmlSelectControl.Items.AddRange(_listItems.ToArray());
            HtmlSelectControl.SelectedIndex = controlNumber - 1;
        }

2 つ目は、ドロップダウンごとに個別のリストを作成する場所です。これはあなたがする必要があることです:

        for (int controlNumber = 1; controlNumber < 4; controlNumber++) {
            var _listItems = new List<ListItem>{ new ListItem("Item1"), new ListItem("Item2"), new ListItem("Item3")};
            var HtmlSelectControl = ((HtmlSelect) this.FindControl(String.Format("Select{0}", controlNumber)));
            HtmlSelectControl.Items.AddRange(_listItems.ToArray());
            HtmlSelectControl.SelectedIndex = controlNumber - 1;
        }
于 2010-07-09T10:18:00.077 に答える