UpdatePanel中GridView的分页问题

项目中在UpdatePanel范围内加入了一个GridView控件。
如果此页面初始化有数据时,分页效果一切正常。
但是当初始化时没有数据,页面中点击按钮加载数据后,再点分页数字时报异常:“Microsoft JScript 运行时错误: 缺少对象”

经多方请教,几经周折后,终于搞定这个问题。

病因:
加入UpdatePanel后,gridview绑定数据属于局部刷新,有些js便没有注册到页面对象中,所以会出现js错误。

解决办法:
1 设置GridView的OnPageIndexChanging事件,在C#后台写入获取新页面索引,绑定数据的代码。
例如:

None.gif      protected   void  GridView1_PageIndexChanging( object  sender, GridViewPageEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        GridView1.PageIndex 
= e.NewPageIndex;
InBlock.gif
InBlock.gif        GridView1.DataSource 
= getDt();
InBlock.gif
InBlock.gif        GridView1.DataBind();
ExpandedBlockEnd.gif    }

2 前台UpdatePanel内给Gridview绑定数据的按钮中,设置属性:PostBackUrl="~/Default.aspx"  。后面的网页写入当前网页的名称
None.gif < asp:Button  ID ="Button1"  runat ="server"  OnClick ="Button1_Click"  Text ="Button"  PostBackUrl ="~/Default.aspx"    />

示例代码
前台ASPX:

ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  %>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<% dot.gif @ Register Assembly="C1.Web.C1WebGrid.2" Namespace="C1.Web.C1WebGrid" TagPrefix="C1WebGrid"  %>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<% dot.gif @ Register Assembly="Microsoft.Web.Atlas" Namespace="Microsoft.Web.UI" TagPrefix="cc1"  %>
None.gif
None.gif
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
None.gif
None.gif
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
None.gif
< head  runat ="server" >
None.gif    
< title > 无标题页 </ title >
None.gif
</ head >
None.gif
< body >
None.gif    
< form  id ="form1"  runat ="server" >
None.gif    
< div >
None.gif        
< cc1:ScriptManager  ID ="ScriptManager1"  runat ="server"  EnablePartialRendering ="True" >
None.gif            
< ErrorTemplate >
None.gif                
< div  style ="padding: 12px; width: 400px; height: 140px; border: #000000 1px solid;
None.gif                    background-color: white; text-align: left"
>
None.gif                    An error has occurred:
< br  />
None.gif                    
< span  id ="errorMessageLabel"  runat ="server" ></ span >
None.gif                    
< br  />
None.gif                    
< br  />
None.gif                    
< input  id ="okButton"  runat ="server"  type ="button"  value ="OK"   />
None.gif                
None.gif            
</ ErrorTemplate >
None.gif        
</ cc1:ScriptManager >
None.gif        
&nbsp; </ div >
None.gif        
< cc1:UpdatePanel  ID ="UpdatePanel1"  runat ="server" >
None.gif            
< ContentTemplate >
None.gif        
< asp:Button  ID ="Button1"  runat ="server"  OnClick ="Button1_Click"  Text ="Button"  PostBackUrl ="~/Default.aspx"    />
None.gif        
< asp:GridView  ID ="GridView1"  runat ="server"  AllowPaging ="True"  AllowSorting ="True"  AutoGenerateColumns ="False"  OnPageIndexChanging ="GridView1_PageIndexChanging" >
None.gif            
< Columns >
None.gif                
< asp:TemplateField >
None.gif                    
< ItemTemplate >
None.gif                        
< asp:TextBox  ID ="TextBox1"  runat ="server"  Text =<%#  Eval("id") % > > </ asp:TextBox >
None.gif                    
</ ItemTemplate >
None.gif                
</ asp:TemplateField >
None.gif                
< asp:TemplateField >
None.gif                    
< ItemTemplate >
None.gif                        
< asp:TextBox  ID ="TextBox2"  runat ="server"  Text =<%#  Eval("name") % > > </ asp:TextBox >
None.gif                    
</ ItemTemplate >
None.gif                
</ asp:TemplateField >
None.gif                
< asp:BoundField  DataField ="name"   />
None.gif            
</ Columns >
None.gif        
</ asp:GridView >
None.gif            
</ ContentTemplate >
None.gif        
</ cc1:UpdatePanel >
None.gif        
</ div >
None.gif    
</ form >
None.gif
</ body >
None.gif
</ html >
None.gif

后台CS:
None.gif using  System;
None.gif
using  System.Data;
None.gif
using  System.Configuration;
None.gif
using  System.Web;
None.gif
using  System.Web.Security;
None.gif
using  System.Web.UI;
None.gif
using  System.Web.UI.WebControls;
None.gif
using  System.Web.UI.WebControls.WebParts;
None.gif
using  System.Web.UI.HtmlControls;
None.gif
None.gif
public  partial  class  _Default : System.Web.UI.Page 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (!IsPostBack)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//this.GridView1.DataSource = this.getDt();
InBlock.gif            
//this.GridView1.DataBind();
ExpandedSubBlockEnd.gif
        }

ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
protected void Button1_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.GridView1.DataSource = this.getDt(); 
InBlock.gif        
this.GridView1.DataBind();
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
private DataTable getDt()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        DataTable dt 
= new DataTable();
InBlock.gif        dt.Columns.Add(
"id");
InBlock.gif        dt.Columns.Add(
"name");
InBlock.gif
InBlock.gif        DataRow dr 
= null;
InBlock.gif        
for (int i = 0; i < 20; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            dr 
= dt.NewRow();
InBlock.gif            dr[
"id"= i.ToString();
InBlock.gif            dr[
"name"= "名字" + i.ToString();
InBlock.gif
InBlock.gif            dt.Rows.Add(dr);
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
return dt;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        GridView1.PageIndex 
= e.NewPageIndex;
InBlock.gif
InBlock.gif        GridView1.DataSource 
= getDt();
InBlock.gif
InBlock.gif        GridView1.DataBind();
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值