2012-04-02 35 views
0

大家好我做一個程序的嵌套gridview我的設計是如下的那個頁面加載尋呼兒童網格視圖不工作

enter image description here

<asp:Panel CssClass="grid" ID="pnlCust" runat="server"> 
    <asp:UpdatePanel ID="pnlUpdate" runat="server"> 
     <ContentTemplate> 
      <asp:GridView AllowPaging="True" ID="gvCustomers" AutoGenerateColumns="False" DataKeyNames="EmpID" 
       runat="server" ShowHeader="true" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" 
       BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical" > 
       <AlternatingRowStyle BackColor="White" /> 
       <Columns> 
        <asp:TemplateField> 
         <ItemTemplate> 
          <asp:Panel CssClass="group" ID="pnlCustomer" runat="server"> 
           <%--<asp:Image ID="imgCollapsible" CssClass="first" ImageUrl="~/Assets/img/plus.png" 
            Style="margin-right: 5px;" runat="server" /><span class="header"> 
             <%#Eval("EmpID")%> 
             : 
             <%#Eval("empname")%>--%> 
           <asp:RadioButton ID="rdbtn" runat="server" onclick="RadioCheck(this);" OnCheckedChanged="radio_changed" Text='<%# Bind("EmpID") %>' 
            AutoPostBack="true"></asp:RadioButton> 
          </asp:Panel> 
          <asp:Panel Style="margin-left: 20px; margin-right: 20px" ID="pnlOrders" runat="server"> 
           <asp:GridView AutoGenerateColumns="false" CssClass="grid" ID="gvOrders" runat="server" 
            PageSize="1" ShowHeader="true" EnableViewState="false" DataKeyNames="EmpID" AllowPaging="true" 
            OnPageIndexChanging="gvOrders_PageIndexChanging"> 
            <RowStyle CssClass="row" /> 
            <AlternatingRowStyle CssClass="altrow" /> 
            <Columns> 
             <asp:BoundField HeaderText="Employee Id" DataField="EmpID"> 
              <ItemStyle HorizontalAlign="Center" Width="100px" /> 
             </asp:BoundField> 
             <asp:TemplateField ItemStyle-CssClass="rownum"> 
              <ItemTemplate> 
               <%# Container.DataItemIndex + 1 %> 
              </ItemTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField HeaderStyle-BackColor="#EFF1F1" ItemStyle-HorizontalAlign="Center" 
              ItemStyle-Height="25" HeaderStyle-Width="50" ItemStyle-Width="50"> 
              <HeaderTemplate> 
               <input id="chkBoxAll" type="checkbox" onclick="checkAllBoxes()" /> 
              </HeaderTemplate> 
              <ItemTemplate> 
               <asp:CheckBox ID="chkBoxChild" runat="server" /> 
              </ItemTemplate> 
             </asp:TemplateField> 
             <asp:BoundField DataField="PayPeriodNumber" HeaderText="PayPeriod" HeaderStyle-BackColor="#EFF1F1" 
              ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="80" ItemStyle-Width="80"> 
             </asp:BoundField> 
             <asp:BoundField DataField="PayRollYear" HeaderText="Payroll Year" HeaderStyle-BackColor="#EFF1F1" 
              ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="100" ItemStyle-Width="100"> 
             </asp:BoundField> 
             <asp:BoundField DataField="PaymentDate" HeaderText="Payment Date" HeaderStyle-BackColor="#EFF1F1" 
              ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="110" ItemStyle-Width="110"> 
             </asp:BoundField> 
            </Columns> 
           </asp:GridView> 
          </asp:Panel> 

         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
       <FooterStyle BackColor="#CCCC99" /> 
       <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
       <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
       <RowStyle BackColor="#F7F7DE" /> 
       <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
       <SortedAscendingCellStyle BackColor="#FBFBF2" /> 
       <SortedAscendingHeaderStyle BackColor="#848384" /> 
       <SortedDescendingCellStyle BackColor="#EAEAD3" /> 
       <SortedDescendingHeaderStyle BackColor="#575357" /> 
      </asp:GridView> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</asp:Panel> 

選擇圖像上單選按鈕的一個I將顯示對應的員工詳細信息,其是如下

enter image description here

我已經寫分頁的GridView控件如下孩子的

if (!Page.IsPostBack) 
{ 
    GridViewChildPageIndex(); 
    } 

private void GridViewChildPageIndex() 
{ 
    DataTable dtPageIndex = new DataTable(); 
    dtPageIndex.Columns.Add("PageIndex", typeof(int)); 
    for (int i = 0; i < gvCustomers.Rows.Count; i++) 
    { 
     dtPageIndex.Rows.Add("0"); 
    } 
    Session["ChildPageIndex"] = dtPageIndex; 
} 

尋呼碼GridView的是如下

protected void gvOrders_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView gvwChild = (GridView)sender; 
    //GridViewRow gvRowParent = ((System.Web.UI.WebControls.GridView)sender).Parent as GridViewRow; 
    GridViewRow gvRowParent = gvwChild.Parent as GridViewRow; 
    gvwChild.PageIndex = e.NewPageIndex; 
    if (Session["ChildPageIndex"] != null) 
    { 
     DataTable dtPageIndex = (DataTable)Session["ChildPageIndex"]; 
     dtPageIndex.Rows[gvRowParent.RowIndex][1] = e.NewPageIndex; // *I am getting error here as Object reference not set to an Object can any one tell where I went wrong* 
    } 
    BindChildGrdView(gvCustomers.DataKeys[gvRowParent.RowIndex].Value.ToString(), gvwChild); 

} 

Stack Trace

at _Default.gvOrders_PageIndexChanging(Object sender, GridViewPageEventArgs e) in d:\Projects\GridView-Collapsible\GridView-Collapsible\Default.aspx.cs:line 54 at System.Web.UI.WebControls.GridView.OnPageIndexChanging(GridViewPageEventArgs e) at System.Web.UI.WebControls.GridView.HandlePage(Int32 newPage) at System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) at System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

+0

除非我是盲人,我沒有看到什麼是不工作的實際說明。 – 2012-04-02 14:30:34

+0

雖然分頁我得到錯誤,因爲我提到'對象引用未設置爲對象' – Dotnet 2012-04-02 14:31:43

回答

4

這可能會幫助你: 在gvOrders_PageIndexChang荷蘭國際集團功能,使用

GridViewRow gvRowParent = gvwChild.Parent.Parent as GridViewRow; 

而且裏面的,如果條件

if (Session["ChildPageIndex"] != null) 
{ 
    DataTable dtPageIndex = (DataTable)Session["ChildPageIndex"]; 
    dtPageIndex.Rows[gvRowParent.RowIndex][0] = e.NewPageIndex; // *I am getting error here as Object reference not set to an Object can any one tell where I went wrong* 
} 

,你也可以調試和檢查,如果gvRowParent是這個函數的第二行的實例化對象。

+0

仍然是同一問題 – Dotnet 2012-04-02 14:27:15

+0

gvRowParent可能爲空。檢查gvwChild.Parent作爲GridViewRow是一個有效的演員。如果這也不起作用,請檢查堆棧跟蹤。那會給你空的物體。 – Krishna 2012-04-02 15:03:15

+0

增加'Stack Trace'檢查一次 – Dotnet 2012-04-02 15:11:24