我在gridview的模板字段中有三个下拉列表。如果第一个下拉列表中选择了值,那么我将使用listitem数组填充另外两个下拉列表。下拉列表中都包含相同的项目。
假设我有一个名为ddlone,ddltwo,ddlthree的下拉列表。如果ddlone有一个selectedvalue,那么根据ddlone的selectedvalue我在ddltwo和dllthree中添加项目。他们都有相同的项目清单。问题是当我设置ddltwo或ddlthree的selectedindex或selectedvalue时,两者都得到相同的索引或值,我不知道如何。
这是我的gridview:
<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的selecetedvalue变为相同。
我尝试制作一个项目的副本,但问题仍然存在。