摘要:[C#]-ListView + DataPager 在不使用 LinqDataSource 時會有問題
參考網址:
ASP.NET 3.5 中新增的 ListView、DataPager 與 LinqDataSource 控制項可說是絕佳拍檔,不過當你不使用 LinqDataSource 的時候會發生一個小問題,就是當你在第一次點選 DataPager 中的頁碼時並不會跟著跳頁,而點選第二次的時候才會正常運作!所謂的「不使用 LinqDataSource 的時候」是指你的資料來源的取得可能是寫在 Code Behind 中或是使用 ObjectDataSource 或 SqlDataSource 控制項,例如:
protected void Page_Load(object sender, EventArgs e)
{
var q = from p in db.News select p;
ListView2.DataSource = q;
ListView2.DataBind();
}
要解決這個問題必須要在 ListView 控制項宣告 OnPagePropertiesChanging 個事件,並執行該 DataPager 的 SetPageProperties 方法,範例程式如下:
protected void Page_Init(object sender, EventArgs e)
{
ListView2.PagePropertiesChanging +=
new EventHandler<PagePropertiesChangingEventArgs>(ListView2_PagePropertiesChanging);
}
void ListView2_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
ListView srcListView = sender as ListView;
this.DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
srcListView.DataBind();
}