<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. DropDownList
复选框的OnCheckedChange事件中的代码应该是什么,每当我选中它时,都应填写同一行的下拉列表。
我尝试了gridview的RowDataBound事件,但是数据太大,因此处理时间很长,不必要地检查了每行复选框。
由于我是新用户,请提供帮助。 提前致谢。 :)
答案 0 :(得分:1)
您可以使用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" });
}