选中该行的复选框时,在 'OncheckedChange' 事件上绑定 gridview 内的下拉列表

Bind dropdownlist which is inside gridview on 'OncheckedChange' event when checkbox of that row is checked

<asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False" CssClass="outdata">
    <Columns>
        <asp:TemplateField HeaderStyle-HorizontalAlign="Center" ItemStyle-CssClass="profiledata" ItemStyle-HorizontalAlign="Center">
            <HeaderTemplate>
                <input id="Checkbox2" type="checkbox" style="width: 50px !important;" onclick="CheckAll(this)" runat="server" />
            </HeaderTemplate>
            <ItemTemplate>
                <asp:CheckBox ID="chkSelect" OnCheckedChanged="chkSelect_CheckedChanged" runat="server" />
                <asp:HiddenField runat="server" ID="hdnAssid" Value='<%# Eval("Asset_ID") %>' />
            </ItemTemplate>
            <ItemStyle Width="5px" />
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Stop" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:DropDownList runat="server" ID="ddlGrdStops"></asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
</asp:GridView>

假设我在 Gridview 中有 2 列。 1.复选框 2.下拉列表

复选框的 OnCheckedChange 事件中的代码应该是什么,每当我选中它时,应该填充同一行的下拉列表。

我尝试了 gridview 的 RowDataBound 事件,但数据太大,因此处理时间很长,并且不必要地检查每一行复选框。

因为我是新手,所以请帮忙。 提前致谢。 :)

您可以使用CheckBox 的NamingContainer 将DropDownList 定位在同一行中。 PS 在 CheckBox 上将 AutoPostBack 设置为 true。

protected void chkSelect_CheckedChanged(object sender, EventArgs e)
{
    //cast the sender back to a checkbox
    CheckBox cb = sender as CheckBox;

    //get the current gridviewrow from the checkbox namingcontainer
    GridViewRow row = cb.NamingContainer as GridViewRow;

    //use findcontrol to locate the dropdownlist in that row
    DropDownList ddl = row.FindControl("ddlGrdStops") as DropDownList;

    //add the items to the dropdownlist
    ddl.Items.Add(new ListItem() { Text = "DropDownList found", Value = "1" });
}