EnableViewState="false"的DataGrid分页

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

用DataGrid默认的分页方式有两个小问题

1.要有viewstate,由你表的数据量决定,一般情况下较大

2.用的是PostBack方式,刷新的时候提示是否要重发消息

所以改为取消viewstate在OnItemCreated生成HyperLink 方式,避免了以上两个问题

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<script language="C#" runat="server">

public void ItemCreated(Object sender, DataGridItemEventArgs e) {

ListItemType elemType = e.Item.ItemType;

if (elemType == ListItemType.Pager)

{

TableCell pager = (TableCell) e.Item.Controls[0];

for (int i=0; i<pager.Controls.Count; i+=2)

{

Control o = pager.Controls[i];

if (o is LinkButton)

{

LinkButton lb = (LinkButton) o;

HyperLink hl=new HyperLink();

hl.NavigateUrl=Request.Path + "?page="+lb.CommandArgument;

hl.Text="[ "+lb.Text+" ]";

pager.Controls.RemoveAt(i);

pager.Controls.AddAt(i,hl);

}

else

{

Label l = (Label) o;

l.Text = "Page " + l.Text;

}

}

}

}

protected void Page_Load(Object sender, EventArgs e)

{

if(!Page.IsPostBack){

int pageIndex=0;

try{pageIndex=Int32.Parse(Request["page"])-1;}catch(Exception ex){}

Response.Write(MyDataGrid.PageCount);

MyDataGrid.CurrentPageIndex=pageIndex;

BindData();

}

}

void BindData(){

//绑定数据库,略

}

</script>

<HTML>

<body>

<form id="Form1" method="post" runat="server">

<asp:datagrid id="MyDataGrid" runat="server" EnableViewState="false" AllowPaging="True" PageSize="10"

OnItemCreated="ItemCreated"

PagerStyle-BackColor="#FFFFFF"

PagerStyle-HorizontalAlign="Right"

PagerStyle-Mode="NumericPages">

</asp:datagrid>

</form>

</body>

</HTML>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航