GridView allowPaging = true不显示页码2和3.显示14567

时间:2012-10-25 16:03:56

标签: c# gridview paging

我有一个gridview,我需要分页。当我allowPaging = true时,它显示145678910 ....它不会显示第2页和第3页。如果我尝试将模式更改为NextPreviousFirstLast,它只在第一页上显示'Next',如果我点击它,它只在第二页上显示“第一个”和“最后一个”。这是代码:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="Black" AutoGenerateColumns="False" BackColor="#CCCCCC" 
            BorderColor="#666666"    OnRowDataBound  = "HandleRowDataBound" BorderStyle="Solid" BorderWidth="1px" CellSpacing="2" Width ="942px"
            Font-Names="Arial" Font-Size="8pt" ShowHeaderWhenEmpty="True"  CSSClass="mytable" AllowPaging="true" OnPageIndexChanging="GridView1_PageIndexChanging" 
             PageSize="25">
                <PagerSettings  Mode="NextPreviousFirstLast" FirstPageText="First" PreviousPageText="Previous" NextPageText="Next" LastPageText="Last" />
                <Columns>
                    <asp:TemplateField HeaderText="Select" ControlStyle-Width = "30px">
                        <ItemTemplate>
                              <asp:CheckBox runat="server" ID="DiscontinuedCheckBox" CssClass="SelectCheckBox" />
                        </ItemTemplate>
                        <ControlStyle Width="30px"></ControlStyle>
                        <ItemStyle Wrap="False" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Recall Qty"  ItemStyle-Wrap="true"  ItemStyle-Width="100px"   >
                        <ItemTemplate >
                            <img id="star1" runat ="server" src="../Images/red_star.gif" alt="Red Star" class="RedStars"/>
                            <asp:TextBox runat ="server" ID="textBoxQty" Width = "50px"  Text ="1" ReadOnly="false" />
                        </ItemTemplate>
                        <HeaderStyle Width = "100px" />
                        <ItemStyle Width="100px" />
                        <ItemStyle Wrap="False" Width="60px"></ItemStyle>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Delivery Location"     >
                        <ItemTemplate >
                            <div style="width:200px">
                                <div style ="float : left; ">
                                    <asp:CheckBox runat="server" ID="packShipCB" Text ="Pack Ship &nbsp;&nbsp;&nbsp; or " CssClass="SendToShip"  AutoPostBack="false" />
                                </div> 
                                <asp:TextBox runat ="server" ID="deliveryLocationTB"  CssClass="AllDelivery"  ReadOnly ="false" Width="80px"   />
                            </div>
                        </ItemTemplate>
                        <HeaderStyle Width = "200px" />
                        <ItemStyle Width="200px" />
                        <ItemStyle Width ="160px" />
                    </asp:TemplateField>

                    <%-- <asp:BoundField  HeaderText="Data"  />--%>
                    <asp:BoundField HeaderText="Request Number"  DataField="requestNumber"  ItemStyle-Width = "50px">
                        <HeaderStyle Wrap="True" Width="50px" />
                        <ItemStyle Wrap="True" Width="50px" />
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Item Number"  DataField="materialLineItemID"  />
                    <asp:BoundField HeaderText="Program" DataField="programName" >
                        <ItemStyle Wrap="False" />
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Program POC" DataField="programPOC" >
                        <ItemStyle Wrap="False" />
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Material Number" DataField="materialNumber" ItemStyle-Width="100px">
                        <HeaderStyle Wrap="False" />
                    </asp:BoundField >
                    <asp:BoundField HeaderText="Qty in Storage" DataField="availableQty" ItemStyle-Width="100px">
                        <ItemStyle Width="100px" Wrap="False"></ItemStyle>
                    </asp:BoundField >
                    <asp:BoundField HeaderText="Description" DataField="Description" ItemStyle-Width="300px" >
                        <ItemStyle Width="300px" Wrap="False"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Serialized" DataField="Serialized" ItemStyle-Width="100px">
                        <ItemStyle Width="100px"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Serial Number" DataField="serialNumber" ItemStyle-Width="200px">
                        <ItemStyle Width="200px" Wrap="False"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Shelf Life" DataField="shelfLIfe" DataFormatString="{0:d}" HtmlEncode="false" ItemStyle-Width="100px" >
                        <ItemStyle Width="100px"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Cost Center" DataField="costCenter" ItemStyle-Width="200px">
                        <ItemStyle Width="200px" Wrap="False"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Charge Number" DataField="chargeNumber" ItemStyle-Width="200px">
                        <ItemStyle Width="200px" Wrap="False"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField DataField="contractNumber" HeaderText="Contract Number" ItemStyle-Width="200px">
                        <HeaderStyle Wrap="False" />
                        <ItemStyle Width="200px" />
                    </asp:BoundField>

                    <asp:BoundField DataField="assetTagNumber" HeaderText="Asset Tag Number" ItemStyle-Width="200px">
                        <HeaderStyle Wrap="False" />
                        <ItemStyle Width="200px" />
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Storage Duration" DataField="Duration" ItemStyle-Width="200px">
                        <ItemStyle Width="200px" Wrap="False"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Handling Unit Number" DataField="handlingUnitNumber" ItemStyle-Width="100px">
                        <ItemStyle Width="100px" Wrap="False"></ItemStyle>
                    </asp:BoundField >
                    <asp:BoundField HeaderText="Storage Location" DataField="storageLocation" ItemStyle-Width="100px">
                        <ItemStyle Width="100px" Wrap="False"></ItemStyle>
                    </asp:BoundField >
                    <asp:BoundField HeaderText="Time in Storage" DataField="storageTime" ItemStyle-Width="200px">
                        <ItemStyle Width="200px" Wrap="False"></ItemStyle>
                    </asp:BoundField>
                </Columns>
            <FooterStyle BackColor="#CCCCCC" />
            <HeaderStyle  BackColor="#999999" Font-Bold="True" ForeColor="#880C1B" 
                HorizontalAlign="Center" Font-Size="9pt" Wrap="true" BorderStyle="Solid"  VerticalAlign="Middle"
                BorderWidth="1px"/>
            <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left"  />
            <RowStyle BackColor="White" HorizontalAlign="Center" CssClass="Unselected" 
                Wrap="false" />
            <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#F1F1F1" />
            <SortedAscendingHeaderStyle BackColor="#808080" />
            <SortedDescendingCellStyle BackColor="#CAC9C9" />
            <SortedDescendingHeaderStyle BackColor="#383838" />
        </asp:GridView>

以下是代码:

protected void Page_Load(object sender, EventArgs e)
    {

        siteID = int.Parse(Request.QueryString["s"].ToString());
        FillDetails(); 
    }

    //Pulls data from database for items to be recalled based on site, and user rights and enables to functions of the controls 
    private void FillDetails()
    {
        DataSet materials = RequestDB2.GetStoredMaterialsView(siteID);

        GridView1.DataSource = materials;
        GridView1.DataBind();

        if (GridView1.Rows.Count >= 9) 
            paneling.Style["height"] = "300px";
        //if not items exit
        if (materials == null || materials.Tables[0].Rows.Count == 0)
        {
            Error.InnerText = "You have no materials to be recalled from this site.";
        }
        else
        {
            //Adds thead and tbody tags
            GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
        }
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataBind();
    }


    protected void HandleRowDataBound(object sender, GridViewRowEventArgs e)
    {

    }

以下是我看到的内容:enter image description here

当我看到萤火虫时,我看到第2页和第3页显示:无。关于为什么会发生这种情况的想法?

2 个答案:

答案 0 :(得分:1)

您没有在GridView1_PageIndexChanging中分配数据源。您需要在绑定之前分配数据源。你最好试着调用FillDetails() 变化

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    FillDetails();       
}

答案 1 :(得分:1)

尝试使用PagerSetting作为..

   <PagerSettings  FirstPageText="First Page"  LastPageText="Last Page" 
                   Mode="NumericFirstLast" Position="TopAndBottom" />  

protected void grdView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.DataSource  = RequestDB2.GetStoredMaterialsView(siteID);
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}