gridview动态绑定数据后怎样分页??

时间:2021-03-20 17:33:58
代码如下
 protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //实现动态绑定后分页
        ConnDB conn = new ConnDB(strConn);
        GridView1.PageIndex = e.NewPageIndex;
        string str1 = sql语句;
             DataSet ds = conn.ReturnDataSet(str1);
             DataView dv = ds.Tables[0].DefaultView;
             GridView1.DataSource = dv;
             GridView1.DataBind();
        this.GridView1.DataKeyNames = new string[] { "f_device" };
}
动态绑定数据后,gridview第一页显示正常,点击后面页没反应,上面的代码也没作用,why???
看到资料说需要设置GridView1.DataKeyNames,我上面的设置位置对吗,我必须在代码里设置,因为sql语句也是动态的。

12 个解决方案

#1


有分页选项,开启就可以了,你可以看看msdn找gridview

#2


其实呢,可以这样
pageindexchanging事件中编写
     //分页
        this.GridView1.PageIndex = e.NewPageIndex;
       this.bind();//绑定数据库的方法

#3


启动分布功能或直接读取pagerDatasource。

#4


分页功能肯定是启用了的,当然是不行才写代码啊。如果不是动态绑定数据直接启用就是可以的!
to w511325:能否将详细代码都写上,我的代码也是为了实现你所说的,不知哪里不对,请各位高手指教?

#5


引用 2 楼 w511325 的回复:
其实呢,可以这样 
pageindexchanging事件中编写 
     //分页 
        this.GridView1.PageIndex = e.NewPageIndex; 
       this.bind();//绑定数据库的方法



这个事件不能少

#6


引用 5 楼 _NET2004 的回复:
引用 2 楼 w511325 的回复:
其实呢,可以这样
pageindexchanging事件中编写
//分页
this.GridView1.PageIndex = e.NewPageIndex;
this.bind();//绑定数据库的方法



这个事件不能少
各位老大有看我的代码和我的提问吗??

#7


在GRIDVIEW2的事件里给GRIDVIEW1绑定?
而且获得的是GRIDVIEW2的NEWPAGEINDEX?
有些不理解……
如果没好的解决办法,放弃GRIDVIEW的自动分页,自己加LINKBUTTON写分页……

#8


在GRIDVIEW2的事件里给GRIDVIEW1绑定...................

#9


引用 7 楼 sfczz 的回复:
在GRIDVIEW2的事件里给GRIDVIEW1绑定?
而且获得的是GRIDVIEW2的NEWPAGEINDEX?
有些不理解……
如果没好的解决办法,放弃GRIDVIEW的自动分页,自己加LINKBUTTON写分页……

不要意思,上面是我提问题时将事件中所有的gridview2修改为gridview1,方便大家看,忘记修改事件里的了,这位兄弟够细心
所以其实是放在相同的gridview对象里的。。。因为查看资料大家有这样实现过,所以我想那就肯定可以这样实现,只是不知道自己哪个地方错了

#10


现在不做.NET,手头没法测试……
先弹个框啊啥的,看看这个事件被触发没
然后看看是不是语句顺序问题,先设置数据源,然后设置PAGEINDEX,然后再绑定

PS:有些不理解LZ为什么要用动态绑定,是因为写了带分页的SQL?

#11


谢谢上面各位,问题已经解决!动态绑定是因为gridview的数据源是根据上一个事件触发而得来的,所以必须是动态的。
我所做的操作:1、去掉this.GridView1.DataKeyNames = new string[] { "f_device" }; 
              2、设置gridviw的enablesortingandpagingcallbacks为false-----默认的是false,但我前面改为true了
其它代码没有任何变化,再次感谢上面各位帮我分析!结贴

#12


2楼正解。

#1


有分页选项,开启就可以了,你可以看看msdn找gridview

#2


其实呢,可以这样
pageindexchanging事件中编写
     //分页
        this.GridView1.PageIndex = e.NewPageIndex;
       this.bind();//绑定数据库的方法

#3


启动分布功能或直接读取pagerDatasource。

#4


分页功能肯定是启用了的,当然是不行才写代码啊。如果不是动态绑定数据直接启用就是可以的!
to w511325:能否将详细代码都写上,我的代码也是为了实现你所说的,不知哪里不对,请各位高手指教?

#5


引用 2 楼 w511325 的回复:
其实呢,可以这样 
pageindexchanging事件中编写 
     //分页 
        this.GridView1.PageIndex = e.NewPageIndex; 
       this.bind();//绑定数据库的方法



这个事件不能少

#6


引用 5 楼 _NET2004 的回复:
引用 2 楼 w511325 的回复:
其实呢,可以这样
pageindexchanging事件中编写
//分页
this.GridView1.PageIndex = e.NewPageIndex;
this.bind();//绑定数据库的方法



这个事件不能少
各位老大有看我的代码和我的提问吗??

#7


在GRIDVIEW2的事件里给GRIDVIEW1绑定?
而且获得的是GRIDVIEW2的NEWPAGEINDEX?
有些不理解……
如果没好的解决办法,放弃GRIDVIEW的自动分页,自己加LINKBUTTON写分页……

#8


在GRIDVIEW2的事件里给GRIDVIEW1绑定...................

#9


引用 7 楼 sfczz 的回复:
在GRIDVIEW2的事件里给GRIDVIEW1绑定?
而且获得的是GRIDVIEW2的NEWPAGEINDEX?
有些不理解……
如果没好的解决办法,放弃GRIDVIEW的自动分页,自己加LINKBUTTON写分页……

不要意思,上面是我提问题时将事件中所有的gridview2修改为gridview1,方便大家看,忘记修改事件里的了,这位兄弟够细心
所以其实是放在相同的gridview对象里的。。。因为查看资料大家有这样实现过,所以我想那就肯定可以这样实现,只是不知道自己哪个地方错了

#10


现在不做.NET,手头没法测试……
先弹个框啊啥的,看看这个事件被触发没
然后看看是不是语句顺序问题,先设置数据源,然后设置PAGEINDEX,然后再绑定

PS:有些不理解LZ为什么要用动态绑定,是因为写了带分页的SQL?

#11


谢谢上面各位,问题已经解决!动态绑定是因为gridview的数据源是根据上一个事件触发而得来的,所以必须是动态的。
我所做的操作:1、去掉this.GridView1.DataKeyNames = new string[] { "f_device" }; 
              2、设置gridviw的enablesortingandpagingcallbacks为false-----默认的是false,但我前面改为true了
其它代码没有任何变化,再次感谢上面各位帮我分析!结贴

#12


2楼正解。