[英]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.