如何在嵌套网格中选择行 [英] How to select row in nested grid

查看:72
本文介绍了如何在嵌套网格中选择行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码

<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:

  1. 为父网格订阅OnItemDataBound事件.
  2. 在事件处理函数中查找嵌套的控件:
    DataGrid ParamGV =(DataGrid)e.Item.FindControl("ParamGV");
  3. 一旦函数中有了这个嵌套的网格,您就可以执行任何操作
    您想要的:订阅事件,分配参数等.

  1. Subscribe OnItemDataBound event for a parent grid.
  2. Find the nested controm within the event handler funcntion :
    DataGrid ParamGV= (DataGrid)e.Item.FindControl("ParamGV ");
  3. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆