急,GridView控件自定义分页时为什么不显示分页的数字?

abcyzq 2008-11-26 04:02:09
我做了一个基类,里面有GridView的一些公共属性,但是其他页面继承该类后,运行效果可以显示出部分数据(比如PageSize=20,就显示20条),但分页的数字不见了,没有1,2,3,4之类的数字可选择。
贴出部分代码,请高手指点。
//基类的部分代码
public class ClassBase:System.Web.UI.Page
{
private GridView _GridView;
protected GridView GridView
{
get { return _GridView; }
set
{
_GridView = value;
_GridView.AllowPaging = true;
_GridView.PagerSettings.Mode = PagerButtons.Numeric;
_GridView.AutoGenerateColumns = false;
_GridView.PageSize = 20;
_GridView.ShowFooter = true;
_GridView.ShowHeader = true;
_GridView.AllowSorting = true;
_GridView.PageIndexChanging += new GridViewPageEventHandler(_GridView_PageIndexChanging);
}
}
private DataTable _PageDataSource;
protected DataTable PageDataSource
{
get { return _PageDataSource; }
set
{
_PageDataSource = value;
_GridView.DataSource = _PageDataSource;

}
}

protected virtual void OnSetPageDataSource()
{
//
}

protected void DropDownEvent()
{
// _GridView.PageCount = -1;
_GridView.PageIndex = 0;
this.OnSetPageDataSource();
_GridView.DataBind();
}

protected void _GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
_GridView.PageIndex = e.NewPageIndex;
this.OnSetPageDataSource();
_GridView.DataBind();
}
}

////////子页面 部分代码
public partial class SubPage:ClassBase
{
protected void Page_Load(object sender, EventArgs e)
{
base.GridView = GridView1;
base.DropDownEvent();
}

protected override void OnSetPageDataSource()
{
this.PageDataSource = GetData(base.GridView.PageIndex, base.GridView.PageSize);
}
}
...全文
1201 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
guolunfeng 2010-07-18
  • 打赏
  • 举报
回复
mark
fyl_zyd 2010-01-23
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 niitnanfeng 的回复:]
直接用他自己的分页功能不就得了?
[/Quote]

恩恩!!!!!!!
Lovewithoutreason 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 abcyzq 的回复:]
一楼的你先看看我贴的代码吧,那里有问题。呵呵
[/Quote]

嘿嘿!I'm sorry
Joson.e8love 2008-12-08
  • 打赏
  • 举报
回复
看下 呵呵 不是 很懂 O(∩_∩)O哈哈~
abcyzq 2008-12-02
  • 打赏
  • 举报
回复
弄了个ObjectDataSource控件,貌似能解决我的问题了,不过ObjectDataSource控件灵活性很差,还是asp.net1.1的DataGrid控件好用,它有VirtualItemCount属性,继续求更灵活的处理方法。
abcyzq 2008-12-02
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 niitnanfeng 的回复:]
直接用他自己的分页功能不就得了?
[/Quote]

晕,自带的分页性能差哦,自带分页是先把所有记录查询出来,然后再实现分页的。而不是每次只查找你需要显示的数据,比如你想看第5页的数据,那么你只需要在点第5页的时候才去查询数据库并显示出来,而不是页面一加载就把所有数据查询出来,这样耗时效率低。
koukoujiayi 2008-11-30
  • 打赏
  • 举报
回复
帮楼主顶起!!!
niitnanfeng 2008-11-30
  • 打赏
  • 举报
回复
直接用他自己的分页功能不就得了?
cl9876 2008-11-29
  • 打赏
  • 举报
回复
我有一个分页的,很好使,要得可以给我发个邮件:987jy@163.com
koukoujiayi 2008-11-29
  • 打赏
  • 举报
回复
楼上把楼主的意思理解错了!
我也很想了解!帮楼主顶起!!!
mjjzg 2008-11-28
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
this.nowpage.Text="1";
bindinvit();
}
}
void bindinvit()
{
int currentpage=Convert.ToInt32(this.nowpage.Text);//将当前页面的页面数复值给currentpage
SqlConnection conn=new SqlConnection("server=.;database=web;uid=sa;pwd=");
SqlDataAdapter asd=new SqlDataAdapter("select * from invit order by sendtime desc",conn);
DataSet ds=new DataSet();
asd.Fill(ds,"invit");
System.Web.UI.WebControls.PagedDataSource pds=new PagedDataSource();
pds.DataSource=ds.Tables["invit"].DefaultView;
pds.AllowPaging=true;
pds.PageSize=8;
pds.CurrentPageIndex=currentpage-1;//当前页的索引号
this.pagecount.Text=pds.PageCount.ToString();//总页数
//
if(currentpage==1)
{
this.LinkButton1.Enabled=false;//第一页
this.LinkButton2.Enabled=false;//上一页
}
else
{
this.LinkButton1.Enabled=true;
this.LinkButton2.Enabled=true;
}
if(currentpage==pds.PageCount)
{
this.LinkButton3.Enabled=false;//下一页
this.LinkButton4.Enabled=false; //最后一页
}
else
{
this.LinkButton3.Enabled=true;
this.LinkButton4.Enabled=true;
}
this.GridView.DataSource=pds;
this.GridView.DataBind();
}

这是以前写的一个,自己看一下吧
mjjzg 2008-11-28
  • 打赏
  • 举报
回复
你是否用相应的控件显示了
abcyzq 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cwmwss 的回复:]
嗯嗯。有点乱。
[/Quote]

那里乱了?你看了我的代码没哦
cwmwss 2008-11-27
  • 打赏
  • 举报
回复
嗯嗯。有点乱。
qinhl99 2008-11-27
  • 打赏
  • 举报
回复
感觉有点乱!
abcyzq 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]
你的代码太多了,看不过来。

如果使用数据源控件,上手很快,因为仅需要手写很少的代码,可以参看Scott Mitchell的例子。
[/Quote]

sp1234大哥你好。
我整了个简化的代码如下,帮我看下。
protected void Page_Load(object sender, EventArgs e)
{
PagedDataSource page = new PagedDataSource();
page.VirtualCount = 60;//设置总数为60条
page.PageSize = 20;//每页为20条
page.AllowCustomPaging = true;
page.AllowServerPaging = true;//启用自定义分页
page.AllowPaging = true;//启用分页
page.DataSource = GetData().DefaultView;
page.CurrentPageIndex = 0;
GridView1.DataSource = page;
GridView1.DataBind();
}
照这个代码结果应该显示1,2,3共个分页啊,结果却只有一页20条数据,GridView的自定义分页怎么这么麻烦,没dataGrid好用
  • 打赏
  • 举报
回复
你的代码太多了,看不过来。

如果使用数据源控件,上手很快,因为仅需要手写很少的代码,可以参看Scott Mitchell的例子
abcyzq 2008-11-27
  • 打赏
  • 举报
回复
没高手来帮忙解答吗?
zjybushiren88888 2008-11-27
  • 打赏
  • 举报
回复
帮顶
abcyzq 2008-11-27
  • 打赏
  • 举报
回复
那个兄弟帮忙解决了,分全是他的哈,分不够还可以再加。小弟初学Asp.net2.0,以前弄Winform的
加载更多回复(14)

62,046

社区成员

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

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

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

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