1.往頁面上放一個GridView,將其放置於一個DIV中.正常設置分頁操作.
2.進入模版編輯界面,選擇編輯Pager Template,放上用於執行分頁操作的控件.我的做法是放兩個LinkButton控件.ID分別設爲lnkbtnPrev,lnkbtnNext.
3.在GridView1_DataBound事件中給這兩個控件添加相應的客戶端事件.代碼如下:
GridViewRow pagerRow = GridView1.BottomPagerRow;
LinkButton lnkPrev = (LinkButton)pagerRow.Cells[0].FindControl("lnkbtnPrev");
LinkButton lnkNext = (LinkButton)pagerRow.Cells[0].FindControl("lnkbtnNext");
int newPageIndex = GridView1.PageIndex;
lnkPrev.Enabled = false;
lnkNext.Enabled = false;
lnkPrev.Attributes.Remove("onclick");
lnkNext.Attributes.Remove("onclick");
if (newPageIndex > 0)
{
lnkPrev.Enabled = true;
lnkPrev.Attributes.Add("onclick", "setPageTo(" + (newPageIndex - 1).ToString() + ");return false;");
}
if (newPageIndex < GridView1.PageCount - 1)
{
lnkNext.Enabled = true;
lnkNext.Attributes.Add("onclick", "setPageTo(" + (newPageIndex + 1).ToString() + ");return false;");
}
4.在客戶端腳本中添加setPageTo()方法,以實現回調.
function setPageTo(pageIndex)
{
var context=document.getElementById("listDIV");
context.innerHTML="<IMG SRC='Images/pie.gif' />數據加載中...";
var arg='pageChange|'+pageIndex;
<%= ClientScript.GetCallbackEventReference(this, "arg", "onCallServerComplete", "context")%>;
}
function onCallServerComplete(result,context)
{
context.innerHTML=result;
}
5.在服務器端添加用於實現回調的方法,重新生成GridView分頁後的HTML代碼,傳回客戶端.
public void RaiseCallbackEvent(string eventArgument)
{
serverReturn = eventArgument;
}
public string GetCallbackResult()
{
return pageChange(int.Parse(serverReturn ));
}
private string pageChange(string newIndex)
{
int newPageIndex = int.Parse(newIndex);
//設置數據源
GridView1.DataBind();
return getRenderCode();
}
private string getRenderCode()
{
StringWriter writer1 = new StringWriter(CultureInfo.InvariantCulture);
HtmlTextWriter writer2 = new HtmlTextWriter(writer1);
GridView1.Visible = true;
GridView1.RenderControl(writer2);
writer2.Flush();
writer2.Close();
return writer1.ToString();
}