datapager分页问题
2008年10月16日 星期四 11:47
今天看了一下ListView和DataPager配合做数据分页的教程,感觉很爽很方便,用在自己的项目上面时却出现了问题,具体表现在点击上一页、下一页或者数字跳转页面时通常要点两下才能有反应,而且有时候乱跳页。 我开始测试的代码是这样的:
public
partial
class
ListViewTest : System.Web.UI.Page
{ protected void Page_Load( object sender, EventArgs e) { if ( ! Page.IsPostBack) BindData(); } protected void BindData() { DBDataContext db = new DBDataContext(); var ds = db.Category; ListView1.DataSource = ds; ListView1.DataBind(); db.Dispose(); } } 出现如开始提及的问题,找了半天原因也没有找到。后来在国外的一个论坛上找到了同病相怜的人,有专家给出了一个解决方案。把Page_Load里的数据绑定移到Page_PreRender中,也就是:
public
partial
class
ListViewTest : System.Web.UI.Page
{ protected void Page_Load( object sender, EventArgs e) { // if (!Page.IsPostBack) // BindData(); } protected void Page_PreRender( object sender, EventArgs e) { BindData(); } protected void BindData() { DBDataContext db = new DBDataContext(); var ds = db.Category; ListView1.DataSource = ds; ListView1.DataBind(); db.Dispose(); } } 试了一下分页果然正常了。难道是Page_Load来的太迟?不得而知。另外,还有一种方法同样可行:
public
partial
class
ListViewTest : System.Web.UI.Page
{ protected void Page_Load( object sender, EventArgs e) { if ( ! Page.IsPostBack) BindData(); } protected void Page_PreRender( object sender, EventArgs e) { // BindData(); } protected void ListView1_PagePropertiesChanging( object sender, PagePropertiesChangingEventArgs e) { DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false ); BindData(); } protected void BindData() { DBDataContext db = new DBDataContext(); var ds = db.Category; ListView1.DataSource = ds; ListView1.DataBind(); db.Dispose(); } } |