ListView + DataPager在不使用LinqDataSource时会有问题

ASP.NET 3.5中新增的ListView、DataPager与LinqDataSource控制项可说是绝佳拍档,
不过当你不使用LinqDataSource的时候会发生一个小问题,就是当你在第一次点选DataPager
中的页码时并不会跟着跳页,而点选第二次的时候才会正常运作!所谓的「不使用LinqDataSource
的时候」是指你的资料来源的取得可能是写在Code Behind中或是使用ObjectDataSource或
SqlDataSource控制项,例如:所谓的「不使用LinqDataSource的时候」是指你的资料来源的取
得可能是写在Code Behind中或是使用ObjectDataSource或SqlDataSource控制项,例如:
 protected void  Page_Load( object  sender, EventArgs e) protected void Page_Load( object sender, EventArgs e) 
 { 
     var q 
= from p in  db.News select p; var q = from p in db.News select p; 
     ListView2.DataSource 
= q; ListView2.DataSource = q; 
     ListView2.DataBind(); 
 } 

 

 

要解决这个问题必须要在ListView控制项宣告OnPagePropertiesChanging个事件,并执行该DataPager的
SetPageProperties方法,范例程式如下:要解决这个问题必须要在ListView控制项宣告
OnPagePropertiesChanging个事件,并执行该DataPager的SetPageProperties方法,范例程式如下:
protected void Page_Init( object sender, EventArgs e) 
 { 
     ListView2.PagePropertiesChanging 
+= ListView2.PagePropertiesChanging +=  
         
new  EventHandler<PagePropertiesChangingEventArgs>(ListView2_PagePropertiesChanging); new EventHandler<PagePropertiesChangingEventArgs>(ListView2_PagePropertiesChanging); 
 } 

 
void  ListView2_PagePropertiesChanging( object  sender, PagePropertiesChangingEventArgs e) void ListView2_PagePropertiesChanging( object sender, PagePropertiesChangingEventArgs e) 
 { 
     ListView srcListView 
= sender as  ListView; ListView srcListView = sender as ListView; 
     
this .DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false); this .DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false); 
     srcListView.DataBind(); 
 } 
posted @ 2008-10-16 10:14  KiNg.JiOnG  阅读(1119)  评论(1编辑  收藏  举报
查看博客访问人数(点击):