我有一個可以刪除行的datagrid(使用ajax)。我在以下情況下遇到了尋呼機問題:ASP.NET:在刪除行時刪除
可以說我的PageSize是10,我有101行,因此這是11頁,最後一頁帶有一個元素。不要假定我在第10頁(PageIndex = 9)並刪除一行。然後我進入第11頁(誰現在是空的,並不存在)。 ASP現在向我顯示EmptyDataTemplate並且沒有傳呼機,所以我不能回去。
我的做法(這是不工作)是檢測這種情況下,並一步一個頁面回:
public void Bind()
{
gridMain.DataBind();
}
public void SetPage(int page)
{
gridMain.PageIndex = page;
gridMain.DataBind();
}
protected void ldsGridMain_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
selectArgs = e;
e.Result = (new EnquiryListController()).GetEnquiryList(OnBind(this), supplier);
}
protected void ldsGridMain_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
totalRows = selectArgs.Arguments.TotalRowCount;
//Detect if we need to update the page:
if (gridMain.PageIndex > 0 && (gridMain.PageSize * gridMain.PageIndex + 1) > totalRows) SetPage(gridMain.PageIndex - 1);
}
protected void gridMain_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SetPage(e.NewPageIndex);
}
我可以看到SetPage時調用正確的頁面索引,但沒有按數據綁定」因爲我仍然獲得了EmptyDataTemplate,所以似乎沒有調用。
我不能像使用ajax「移除」元素。 – 2009-09-30 06:28:47
asp.net內置的控件和ajax並不總是很好玩,你可能不得不使用我最絕望的東西,一個更新面板,來拉扯兩個世界的最佳。 你也可以使用jqGrid或其他一些客戶端分頁網格,並把它們全部放在一起構建的asp.net中。 – DevelopingChris 2009-10-03 03:03:39