天天看点

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的分页问题
UpdatePanel中GridView的分页问题

                    <input id="okButton" runat="server" type="button" value="OK" />

UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题

            </ErrorTemplate>

UpdatePanel中GridView的分页问题

        </cc1:ScriptManager>

UpdatePanel中GridView的分页问题

         </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的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题

                        <asp:TextBox ID="TextBox2" runat="server" Text=<%# Eval("name") %>></asp:TextBox>

UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
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的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题
UpdatePanel中GridView的分页问题

}

UpdatePanel中GridView的分页问题

继续阅读