简体   繁体   English

在gridview中每页显示不同数量的记录

[英]Display different number of records at each page in gridview

This is my code which displays 10 records par page in gridview这是我的代码,它在 gridview 中显示 10 条记录标准页面

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
                count += 1;
}

cnt = ds.Tables[0].Rows.Count;

PagedDataSource pageData = new PagedDataSource();
pageData.DataSource = ds.Tables[0].DefaultView;
pageData.AllowPaging = true;

if (PgNum < 1)
{
    pageData.PageSize = 10;
}
else
{
    pageData.PageSize = 10;
}

pageData.CurrentPageIndex = PgNum;

int vcnt = cnt / pageData.PageSize;

if (PgNum < 1)
{
    Panel1.Visible = true;
    lnkPrevious.Visible = false;
}
else if (PgNum > 0)
{
    Panel1.Visible = false;
    lnkPrevious.Visible = true;
}

if (PgNum == vcnt)
{
   lnkNext.Visible = false;
}
else if (PgNum < vcnt)
{
   lnkNext.Visible = true;
}

repeatValues.DataSource = pageData;
repeatValues.DataBind();

I want to display 10 Records in first page and 20 records from second page.我想在第一页显示 10 条记录,从第二页显示 20 条记录。 Any help would be appreciated.任何帮助,将不胜感激。 Thanks谢谢

check this link: 检查此链接:

http://www.dotnetcurry.com/showarticle.aspx?ID=244 http://www.dotnetcurry.com/showarticle.aspx?ID=244

hope it gives you some idea about indexing functionalty. 希望它能使您对索引功能有所了解。

Set the default pagesize to 10 in design. 在设计中将默认页面大小设置为10。

<asp:GridView ID ="grid" runat ="server" AutoGenerateColumns="False" DataKeyNames="DocumentID" DataSourceID="SqlDataSource1" PageSize="10" AllowPaging ="true" OnPageIndexChanged ="grid_PageIndexChanged"  >

And do following in code in grid_PageIndexChanged event. 并在grid_PageIndexChanged事件中的代码中执行以下操作。

protected void grid_PageIndexChanged(object sender, EventArgs e)
{
  var pagenum = this.grid.PageIndex;

   if (pagenum + 1 > 1)
   {
     this.grid.PageSize = 20;

   }
   else
   {
     this.grid.PageSize = 10;
   }
}

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

PopulateData();//This is your table data method 

}

}

protected void ChangePage(object sender, GridViewPageEventArgs e)

{

GridView1.PageIndex = e.NewPageIndex;

this.PopulateData();

}

Its another code behind 它后面的另一个代码

public DataTable SelectTopRows(DataTable dt, int count)
{
DataTable dtnew  = dt.Clone();
for (int i = 0; i < count; i++)
{
    dtnew.ImportRow(dt.Rows[i]);
}
return dtnew ;

http://www.dotnetcurry.com/showarticle.aspx?ID=244 http://www.dotnetcurry.com/showarticle.aspx?ID=244

If you need to display 10 records in the first page and 20 records in the later pages in GridView then the solution will be: 如果您需要在GridView的第一页中显示10 records 20 records ,在后面的页中显示20 records ,那么解决方案将是:

In .aspx page 在.aspx页中

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="CompanyID" DataSourceID="SqlDataSource1" EnableModelValidation="True" AllowPaging="true" PageSize="10"
            OnPageIndexChanging="GridView1_PageIndexChanging" >
...

</asp:GridView>

In .aspx.cs page 在.aspx.cs页中

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    if(e.NewPageIndex != 0)
        GridView1.PageSize = 20;
    else
        GridView1.PageSize = 10;
    GridView1.DataBind();
}

I hope it will help. 希望对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM