我在 gridview 的模板字段中有三个下拉列表。如果第一个下拉列表在其中选择了值,那么我将使用 listitem 数组填充其他两个下拉列表。两个下拉列表中都将包含相同的项目。
假设我有名为 ddlone、ddltwo、ddlthree 的下拉列表。如果 ddlone 有一个 selectedvalue,那么根据 ddlone 的 selectedvalue 我在 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;
当执行倒数第二条语句时,ddltwo 和 ddlthree 的值变得相同。执行最后一条语句时,ddltwo 和 ddlthree 的选择值变得相同。
我尝试制作项目的副本,但问题仍然存在。