2012-04-02 4 views
0

こんにちは選択する上でページングは​​

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

そのページ上の負荷の画像

enter image description here

を次のようにネストされたgridview私のデザインがあると私はプログラムをやっているすべての作業ではありませんラジオボタンの1つに、対応する従業員の詳細を次のように表示します。

enter image description here

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

私が目が見えない限り、実際に何が動作していないのかについての実際の説明は表示されません。 –

+0

ページング中に「オブジェクト参照がオブジェクトに設定されていません」というエラーが表示される – Dotnet

答えて

4

を次のようにこれはあなたを助けることがある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コントロールのページングを書かれています: gvOrders_PageIndexChang機能をINGの、

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は、この関数の2行目のオブジェクトのインスタンスであるかどうかを確認できます。

+0

同じ問題 – Dotnet

+0

gvRowParentがnullになる可能性があります。 GridViewRowとしてのgvwChild.Parentが有効なキャストであるかどうかを確認します。これでも動作しない場合は、スタックトレースをチェックインしてください。それはあなたに空のオブジェクトを与えるでしょう。 – Krishna

+0

'Stack Trace'チェックを一度追加しました – Dotnet