如何在嵌套网格中选择行 [英] How to select row in nested grid
本文介绍了如何在嵌套网格中选择行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的代码
<asp:GridView ID="HeaderGV" runat="server" AutoGenerateColumns="False" OnRowDataBound="HeaderGV_RowDataBound"
Width="100%" OnSelectedIndexChanged="HeaderGV_SelectedIndexChanged" HeaderStyle-CssClass="grid_col_head">
<Columns>
<asp:BoundField DataField="SNO" HeaderText="SNO" ReadOnly="true" ItemStyle-Width="15">
<ItemStyle Width="15px" />
</asp:BoundField>
<asp:TemplateField HeaderText="Header">
<EditItemTemplate>
<%--<asp:TextBox ID="HeaderTxt" runat="server"></asp:TextBox>--%>
<asp:Label ID="HeaderLbl" runat="server" Text='<%#Bind("PARAM_HEAD_NAME") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="HeaderLbl" runat="server" Text='<%#Eval("PARAM_HEAD_NAME") %>'></asp:Label>
<asp:GridView ID="ParamGV" runat="server" AutoGenerateColumns="False" OnSelectedIndexChanged="ParamGV_SelectedIndexChanged"
OnRowDataBound="ParamGV_RowDataBound" Width="100%" HeaderStyle-CssClass="grid_col_head">
<Columns>
<asp:BoundField DataField="SNO" ItemStyle-Width="15">
<ItemStyle Width="15px" />
</asp:BoundField>
<asp:BoundField DataField="PARAM_HEAD_ID" />
<asp:BoundField DataField="PARAM_SUB_ID" />
<asp:BoundField DataField="PARAM_SUB_NAME" />
<asp:CommandField SelectText="EDIT" ShowSelectButton="True" ItemStyle-Width="15"
HeaderText="EDIT">
<ItemStyle Width="15px" />
</asp:CommandField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PARAM_HEAD_ID" HeaderText="HeaderID" ReadOnly="true" />
<asp:CommandField HeaderText="EDIT" ItemStyle-Width="15" SelectText="EDIT" ShowSelectButton="True">
<ItemStyle Width="15px" />
</asp:CommandField>
</Columns>
<HeaderStyle CssClass="grid_col_head" />
</asp:GridView>
protected void ParamGV_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
GridViewRow row = HeaderGV.SelectedRow;
int rowindex= HeaderGV.SelectedIndex;
GridView gv = this.HeaderGV;
GridView gv1 = (GridView)this.HeaderGV.Rows[rowindex+1].FindControl("ParamGV");
GridViewRow Childrow = gv1.SelectedRow;
int RowIndex = gv1.SelectedIndex;
HeadNameDdl.SelectedValue = Server.HtmlDecode(Childrow.Cells[1].Text).Trim();
ViewState["ParameterId"] = Server.HtmlDecode(Childrow.Cells[2].Text).Trim();
ParameterNametxt.Text = Server.HtmlDecode(Childrow.Cells[3].Text).Trim();
}
catch (Exception ex)
{
Literal li = new Literal();
li.Text = "<script> alert('" + ex.Message + "');</script>";
Page.Controls.Add(li);
}
}
在我的代码中HeaderGV(主)ParamGV(子级)
在主网格的itemTemplate中,我放置了一个子网格
当我要为子网格触发selectedIndexchanged事件时,无法获取主网格网格行
in my code HeaderGV(master) ParamGV (child)
In itemTemplate of master grid i placed a child grid
when i want to fire selectedIndexchanged event for child grid am unable to get mastert grid row
推荐答案
ASP.NET数据控件中嵌套项目的基本技术
项目模板为:
The basic technique on nested items within an ASP.NET Data Control
item template is:
- 为父网格订阅OnItemDataBound事件.
- 在事件处理函数中查找嵌套的控件:
DataGrid ParamGV =(DataGrid)e.Item.FindControl("ParamGV");
- 一旦函数中有了这个嵌套的网格,您就可以执行任何操作
您想要的:订阅事件,分配参数等.
- Subscribe OnItemDataBound event for a parent grid.
- Find the nested controm within the event handler funcntion :
DataGrid ParamGV= (DataGrid)e.Item.FindControl("ParamGV ");
- Once you have this nested grid in your function you can do anything
you want with it: subscribe for events, assign parameters, etc..
PS.对于不同的数据控件,代码可能会略有不同.我对DataView或Repeater较为熟悉,但是模式是相同的
PS. code may slightly vary for different data controls. I am more familiar with DataView or Repeater, but the pattern is the same
这篇关于如何在嵌套网格中选择行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文