1

我在 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 的选择值变得相同。

我尝试制作项目的副本,但问题仍然存在。

4

0 回答 0