天天看點

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的分頁問題

繼續閱讀