GirdView 自定义分页不显示分页页数!请大虾帮忙看看!

ztwz 2006-04-04 10:29:56
我以把GirdView的AllowPaging设为true,我表里的数据有16行,我把GirdView设为每页显示3行!
问题一:不会显示分页页数,就是分页下面的1 2 3 4 ...这种!
问题二:分页最多只能翻一页,GirdView.PageIndex的值怎么翻都是1(默认是0)
自动分页的代码是照这儿写的,http://dotnet.chinaitlab.com/ASPNET/39212.html
下面是我的代码!请帮我看看错在哪儿了!因为分页数字显示不出来,所以我添加了两个按钮,上一页,和下一页,用来翻页

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using App_Code.page;
using System.Data.SqlClient;

public partial class test_test : System.Web.UI.Page
{
private int recordCount;//总记录数
private int pageCount;//总页数
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
databind();
}

}

private static DataSet GetCustomersData(int pageIndex, int pageSize, ref int recordCount, ref int pageCount)//当前页,每页显示几条记录,总记录,总页数
{
string connstring = "server=.;database=ztwz;Trusted_Connection=SSPI";
SqlConnection conn = new SqlConnection(connstring);
SqlCommand com = new SqlCommand("GetPage", conn);
com.Parameters.Add(new SqlParameter("@pageIndex", SqlDbType.Int));
com.Parameters[0] .Value = pageIndex;
com.Parameters.Add(new SqlParameter("@pageSize", SqlDbType.Int));
com.Parameters["@pageSize"].Value = pageSize;
com.Parameters.Add(new SqlParameter("@recordCount", SqlDbType.Int));
com.Parameters["@recordCount"].Direction = ParameterDirection.Output;
com.Parameters.Add(new SqlParameter("@pageCount", SqlDbType.Int));
com.Parameters["@pageCount"].Direction = ParameterDirection.Output;
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda = new SqlDataAdapter(com);
DataSet ds = new DataSet();
sda.Fill (ds);
recordCount =(int)com.Parameters[2].Value ;
pageCount =(int)com.Parameters [3].Value ;
return ds;
}


protected void databind()
{
DataSet ds= GetCustomersData (GridView3.PageIndex ,GridView3.PageSize ,ref recordCount,ref pageCount);
GridView3.DataSource = ds;

GridView3.DataBind();
}

public int PageCount
{

get { return this.GridView3 .PageCount; }

}

public int PageSize
{

get { return this.GridView3.PageSize; }

}

public int PageIndex
{

get { return this.GridView3.PageIndex; }

set { this.GridView3 .PageIndex = value; }

}

public int RecordCount
{

get { return recordCount; }

}

protected void GridView3_PageIndexChanging1(object sender, GridViewPageEventArgs e)
{
//GridView gv = (GridView)sender; //这儿看不懂他在干什么,因为我的分页数写显
//示不出来,所以段代码也没有用,
//gv.PageIndex = e.NewPageIndex;

//databind();
}



protected void btnUp_Click(object sender, EventArgs e)//上一页
{
this.PageIndex -= 1;
databind();
}
protected void btnNext_Click(object sender, EventArgs e)//下一页
{
this.PageIndex += 1;
databind();
}
}



-----------------------------------------------------------------------
我的存储过程
create proc [GetPage]
@pageindex int,
@pagesize int,
@recordcount int out,
@pagecount int out
as
select @recordcount=count(*)from data
set @pagecount=ceiling(@recordcount*1.0/@pagesize)
declare @sqlstr nvarchar(1000)

if @pageindex=0 or @pagecount<=1
set @sqlstr=N'select top'+str(@pagesize)+'id,username from data order by id desc'
else if @pageindex=@pagecount-1

set @sqlstr=N' select *from(select top'+str(@recordcount-@pagesize*@pageindex)+
'id,username from data orde by id asc) temptable order by id desc'
else
set @sqlstr=N' select top'+str(@pagesize)+'* from (select top'+str(@recordcount-@pagesize*@pageindex)+
'id,username from data order by id asc) temptable order by id desc'
exec(@sqlstr)
go
...全文
604 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
stormlly 2006-04-05
  • 打赏
  • 举报
回复
select top @pagesize form data where id not in (select n*@pagesize id form data )

你用这个试试


我没有写按id的排列
ztwz 2006-04-05
  • 打赏
  • 举报
回复
.............................
偶看了上面哪个例子,看不懂:(
偶连他的button提交表单是怎么把查找用户提交上去的都看不懂!
主页面一进来就是一个空的protected void Page_Load(object sender, EventArgs e)其它什么都没有,他主页面有个查找按钮的是,他后台代码没有处理他的相关代码,但又能正常提交表单,这个问号看的偶是一个接一个,按F11就跳到一个site.master文件里,这个里面也是空的也只有一个protected void Page_Load(object sender, EventArgs e)空函数,在F11就跳到了ListManager.cs类里面了,我都看不出他是怎么调用的。
大哥们能不能先帮我这个分页搞定了?思归老大给的这个分页示例太深了!
MicrosoftCsharp 2006-04-05
  • 打赏
  • 举报
回复
我说两点 Gridview+ObjectDataSource

1. Gridview 必须把AllowPaging 选上
2. ObjectDataSource里面有三个东西SelectMethod,Count,EnablePaging,这些东西一个都不能少,我刚刚做完的project就是用ObjectDataSouce+Gridview+LINQ+SQL 2005,十分容易
ztwz 2006-04-05
  • 打赏
  • 举报
回复
我也用ObjectDataSource过了,里面用的是代码里的存储过程,但还是哪个问题不会显示分页数!
MicrosoftCsharp 2006-04-05
  • 打赏
  • 举报
回复
你既然都用Gridview乐,为什么还要用DataSet啊,直接用SQLSource或者ObjectDataSource不是更好?
ztwz 2006-04-05
  • 打赏
  • 举报
回复
顶一下!
ztwz 2006-04-05
  • 打赏
  • 举报
回复

偶仔细想了想,我每次只查三条数据放在ds中,然后绑定到GridView中,而GridView中设的就是一页显示3条记录,他认为总共数据只有3条,所以下面的分页数字就不会显示出来,偶在GridView中找了N次,也没有找到VirtualItemCount属性,这个属性是DataGrid中的,但作为GridView作为DataGrid的升级版,怎么会没有相似的属性呢?
问题二中,我自己添加了上一页和下一页按钮,但总是只能翻一页,这个问题出在哪儿我还是没有找到:(
saucer 2006-04-05
  • 打赏
  • 举报
回复
你这样是自定义分页,考虑使用SqlDataSource或者ObjectDataSource,参考Scott Mitchell的文章

http://weblogs.asp.net/scottgu/archive/2006/03/22/440900.aspx

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧