UpdatePanel中GridView的分页问题

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

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

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

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

UpdatePanel中GridView的分页问题    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题    
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题        GridView1.PageIndex 
= e.NewPageIndex;
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题        GridView1.DataSource 
= getDt();
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题        GridView1.DataBind();
UpdatePanel中GridView的分页问题    }

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

示例代码
前台ASPX:

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

后台CS:
UpdatePanel中GridView的分页问题using System;
UpdatePanel中GridView的分页问题
using System.Data;
UpdatePanel中GridView的分页问题
using System.Configuration;
UpdatePanel中GridView的分页问题
using System.Web;
UpdatePanel中GridView的分页问题
using System.Web.Security;
UpdatePanel中GridView的分页问题
using System.Web.UI;
UpdatePanel中GridView的分页问题
using System.Web.UI.WebControls;
UpdatePanel中GridView的分页问题
using System.Web.UI.WebControls.WebParts;
UpdatePanel中GridView的分页问题
using System.Web.UI.HtmlControls;
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
public partial class _Default : System.Web.UI.Page 
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题    
protected void Page_Load(object sender, EventArgs e)
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题    
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题        
if (!IsPostBack)
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题        
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题            
//this.GridView1.DataSource = this.getDt();
UpdatePanel中GridView的分页问题            
//this.GridView1.DataBind();
UpdatePanel中GridView的分页问题
        }

UpdatePanel中GridView的分页问题    }

UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题    
protected void Button1_Click(object sender, EventArgs e)
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题    
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题        
this.GridView1.DataSource = this.getDt(); 
UpdatePanel中GridView的分页问题        
this.GridView1.DataBind();
UpdatePanel中GridView的分页问题    }

UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题    
private DataTable getDt()
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题    
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题        DataTable dt 
= new DataTable();
UpdatePanel中GridView的分页问题        dt.Columns.Add(
"id");
UpdatePanel中GridView的分页问题        dt.Columns.Add(
"name");
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题        DataRow dr 
= null;
UpdatePanel中GridView的分页问题        
for (int i = 0; i < 20; i++)
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题        
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题            dr 
= dt.NewRow();
UpdatePanel中GridView的分页问题            dr[
"id"= i.ToString();
UpdatePanel中GridView的分页问题            dr[
"name"= "名字" + i.ToString();
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题            dt.Rows.Add(dr);
UpdatePanel中GridView的分页问题        }

UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题        
return dt;
UpdatePanel中GridView的分页问题    }

UpdatePanel中GridView的分页问题    
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
UpdatePanel中GridView的分页问题UpdatePanel中GridView的分页问题    
UpdatePanel中GridView的分页问题{
UpdatePanel中GridView的分页问题        GridView1.PageIndex 
= e.NewPageIndex;
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题        GridView1.DataSource 
= getDt();
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题        GridView1.DataBind();
UpdatePanel中GridView的分页问题    }

UpdatePanel中GridView的分页问题}

UpdatePanel中GridView的分页问题
上一篇:配置nginx.conf实现负载均衡


下一篇:Spring Boot采坑记录