EnableViewState=false的DataGrid分页
点击次数:23 次 发布日期:2008-11-26 11:13:49 作者:源代码网
|
源代码网推荐 源代码网推荐 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> 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
