グリッドビューのテンプレート フィールドに 3 つのドロップダウン リストがあります。最初のドロップダウンリストで値が選択されている場合、他の 2 つのドロップダウンリストに listitem の配列を入力しています。どちらのドロップダウン リストにも同じ項目が含まれます。
ddlone、ddltwo、ddlthree という名前のドロップダウンがあるとします。ddlone に選択値がある場合、ddlone の選択値に従って、ddltwo と dllthree にアイテムを追加します。どちらも同じアイテムのリストを持っています。問題は、ddltwo または ddlthree の selectedindex または selectedvalue を設定すると、両方が同じインデックスまたは値を取得する方法がわからないことです。
ここに私のグリッドビューがあります:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="false" OnRowDataBound="gridview_RowDataBound">
<HeaderStyle HorizontalAlign="Left" />
<Columns>
<asp:BoundField HeaderText="SrNo" DataField="SrNo" />
<asp:TemplateField HeaderText="ONE">
<ItemTemplate>
<asp:DropDownList ID="ddlone" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="ddlone_SelectedIndexChanged">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Two">
<ItemTemplate>
<asp:DropDownList ID="ddltwo" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Three">
<ItemTemplate>
<asp:DropDownList ID="ddlthree" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Add">
<ItemTemplate>
<asp:LinkButton ID="lnkAddon" runat="server" Text="+"
Font-Underline="false">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
これはすべて gridview_rowdatabound イベントで行われています。ここに私のコードがあります:
ddlone.SelectedValue = value_one;
items = GetItems(value_one);
ddltwo.Items.Clear(); ddlthree.Items.Clear();
foreach (ListItem it in items)
{
ddlopen.Items.Add(it); ddlclose.Items.Add(it);
}
if (!string.IsNullOrEmpty(value_two)) ddltwo.SelectedValue = value_two;
if (!string.IsNullOrEmpty(value_three)) ddlthree.SelectedValue = value_three;
最後から 2 番目のステートメントが実行されると、ddltwo と ddlthree の値は同じになります。最後のステートメントが実行されると、ddltwo と ddlthree の選択値が同じになります。
アイテムのコピーを作成しようとしましたが、それでも問題が解決しません。