顯示具有 Gridview 標籤的文章。 顯示所有文章
顯示具有 Gridview 標籤的文章。 顯示所有文章

2025年11月25日 星期二

[研究]GridView顯示到豪秒

[研究]GridView顯示到豪秒

2025-11-25

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 20.2

資料表 LogTime 欄位資料型態 datetime2(3)

GridView 的 <asp:BoundField> 無法自行格式化 datetime 到毫秒。

要顯示到毫秒,必須改用 TemplateField + Eval("欄位","格式字串")。

.aspx

<asp:TemplateField HeaderText="事件時間" SortExpression="LogTime">
    <ItemTemplate>
        <%# Eval("LogTime", "{0:yyyy-MM-dd HH:mm:ss.fff}") %>
    </ItemTemplate>
</asp:TemplateField>

(完)

相關

2024年4月14日 星期日

[研究]ASP.NET,WebForm,取得GridView1總列數

[研究]ASP.NET,WebForm,取得GridView1總列數

2024-04-14

在GridView的<PagerTemplate>中,

((GridView)Container.Parent.Parent).PageIndex 回傳目的在第幾頁

((GridView)Container.Parent.Parent).PageSize 回傳每頁有幾筆資料

((GridView)Container.Parent.Parent).PageCount 回傳共幾頁


int totalRowCount = ((GridView)Container.Parent.Parent).Rows.Count;

Rows.Count; 回傳的是當時分頁的列數,

在  GridView.AllowPaging = true 時;因為有很多頁,故不是總列數。

在  GridView.AllowPaging = false 時;因為只有一頁,是總列數。


int totalRowCount = ((DataTable)((GridView)Container.Parent.Parent).DataSource).Rows.Count;

這樣的話,您將能夠獲得 GridView 中的所有資料筆數,即使分頁功能被啟用。


如果該 GridView 使用 DataSourceID 從 SqlDataSource 取得資料,而非 DataSource 取得資料,可以透過 DataSource 屬性取得 SqlDataSource 的實例,然後再從該實例中獲取總列數。

int totalRowCount = ((SqlDataSource)((GridView)Container.Parent.Parent).DataSourceObject).Select(DataSourceSelectArguments.Empty).TotalRowCount;

這樣做可以獲得 SqlDataSource 從資料庫中擷取的總列數,即使 GridView 具有分頁功能。

(完)

相關

https://learn.microsoft.com/zh-tw/dotnet/api/system.web.ui.webcontrols.gridview.pageindex?view=netframework-4.8.1#system-web-ui-webcontrols-gridview-pageindex


[研究]ASP.NET, WebForm, Web User Control : GridView 試用

[研究]ASP.NET, WebForm, Web User Control : GridView 試用

2024-04-12

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

GridViewUserControl1.acsx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GridViewUserControl1.ascx.cs" Inherits="WebApplication1.GridViewUserControl1" %>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>" SelectCommand="SELECT * FROM [MyTable]"></asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="SN" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="SN" HeaderText="SN" InsertVisible="False" ReadOnly="True" SortExpression="SN" />
        <asp:BoundField DataField="Field1" HeaderText="Field1" SortExpression="Field1" />
        <asp:BoundField DataField="Field2" HeaderText="Field2" SortExpression="Field2" />
    </Columns>
    <PagerTemplate>
                <table>
                    <tr>
                        <td style="text-align: right">第&nbsp;<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                        共&nbsp;<asp:Label ID="lblPageCount" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageCount %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                        <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="第一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" CommandName="Page" Text="上一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" CommandName="Page" Text="下一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" CommandName="Page" Text="最後一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        跳到第<asp:TextBox ID="txtNewPageIndex" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageIndex + 1%>" Width="100px"></asp:TextBox>頁&nbsp;
                        每頁顯示<asp:TextBox ID="TextBox_PageSize" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageSize %>" Width="100px"></asp:TextBox>筆&nbsp;
                        共&nbsp;<asp:Label ID="Label1" runat="server" Text="<%#  ((SqlDataSource)((GridView)Container.Parent.Parent).DataSourceObject).Select(DataSourceSelectArguments.Empty).Cast<object>().Count() %>" ForeColor="Blue" />&nbsp;筆&nbsp;
                        <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;
                        </td>
                    </tr>
                </table>
            </PagerTemplate>
</asp:GridView>




GridViewUserControl1.acsx.cs

using System;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class GridViewUserControl1 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gvw = (GridView)sender;
            TextBox TextBox_PageSize = (TextBox)gvw.BottomPagerRow.FindControl("TextBox_PageSize");
            bool success = Int32.TryParse(TextBox_PageSize.Text, out int number);
            if (success)
            {
                gvw.PageSize = number;
            }

            if (e.NewPageIndex < 0)
            {
                TextBox pageNum = (TextBox)gvw.BottomPagerRow.FindControl("txtNewPageIndex");
                int Pa = int.Parse(pageNum.Text);
                if (Pa <= 0)
                {
                    gvw.PageIndex = 0;
                }
                else
                {
                    gvw.PageIndex = Pa - 1;
                }
            }
            else
            {
                gvw.PageIndex = e.NewPageIndex;
            }
            //Bind();
        }
    }
}


********************************************************************************

Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<%@ Register TagPrefix="uc" TagName="GridViewControl" Src="GridViewUserControl1.ascx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <uc:GridViewControl ID="GridViewControl1" runat="server" />

    </form>
</body>
</html>



Default.aspx.cs

不用改



********************************************************************************
執行結果

********************************************************************************

注意:警告 在 'GridViewControl' 元素的開頭和結尾標記之間,不允許使用內容。在 Default.aspx 中 <uc:GridViewControl> 中不能用 <columns> 

(完)

相關

2024年4月12日 星期五

[研究][ASP.NET]設定 Gridview 分頁樣式(四):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 共X筆

[研究][ASP.NET]設定 Gridview 分頁樣式(四):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 共X筆

2024-04-12

總筆數 (不是該分頁的筆數),可改用下面

共&nbsp;<asp:Label ID="Label1" runat="server" Text="<%#  ((IEnumerable)((SqlDataSource)((GridView)Container.Parent.Parent).DataSourceObject).Select(DataSourceSelectArguments.Empty)).Cast<object>().Count() %>" ForeColor="Blue" />&nbsp;筆&nbsp;

或簡化如下

共&nbsp;<asp:Label ID="Label1" runat="server" Text="<%#  ((SqlDataSource)((GridView)Container.Parent.Parent).DataSourceObject).Select(DataSourceSelectArguments.Empty).Cast<object>().Count() %>" ForeColor="Blue" />&nbsp;筆&nbsp;

實際測試可用,程式改成下面

Default6.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default6.aspx.cs"
    Inherits="WebApplication1.Default6" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:SqlDataSource ID="SqlDataSource2" runat="server"
            ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>"
            SelectCommand="SELECT N'全部' AS [Field1] UNION SELECT [Field1] FROM [MyTable]">
        </asp:SqlDataSource>
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
            DataSourceID="SqlDataSource2" DataTextField="Field1" DataValueField="Field1">
        </asp:DropDownList>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>"
            SelectCommand="SELECT * FROM [MyTable] WHERE (Field1=@Field1 OR @Field1=N'全部')"
            >
            <SelectParameters>
                <asp:ControlParameter ControlID="DropDownList1" Name="Field1" PropertyName="SelectedValue" />
            </SelectParameters>
        </asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
            AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="SN"
            DataSourceID="SqlDataSource1"
            OnPageIndexChanging="GridView1_PageIndexChanging">
            <Columns>
                <asp:BoundField DataField="SN" HeaderText="SN" InsertVisible="False" ReadOnly="True" SortExpression="SN" />
                <asp:BoundField DataField="Field1" HeaderText="Field1" SortExpression="Field1" />
                <asp:BoundField DataField="Field2" HeaderText="Field2" SortExpression="Field2" />
            </Columns>
            <PagerTemplate>
                <table>
                    <tr>
                        <td style="text-align: right">第&nbsp;<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                        共&nbsp;<asp:Label ID="lblPageCount" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageCount %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                        <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="第一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" CommandName="Page" Text="上一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" CommandName="Page" Text="下一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" CommandName="Page" Text="最後一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        跳到第<asp:TextBox ID="txtNewPageIndex" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageIndex + 1%>" Width="100px"></asp:TextBox>頁&nbsp;
                        每頁顯示<asp:TextBox ID="TextBox_PageSize" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageSize %>" Width="100px"></asp:TextBox>筆&nbsp;
                        共&nbsp;<asp:Label ID="Label1" runat="server" Text="<%#  ((SqlDataSource)((GridView)Container.Parent.Parent).DataSourceObject).Select(DataSourceSelectArguments.Empty).Cast<object>().Count() %>" ForeColor="Blue" />&nbsp;筆&nbsp;
                        <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;
                        </td>
                    </tr>
                </table>
            </PagerTemplate>
        </asp:GridView>
    </form>
</body>
</html>



Default6.aspx.cs

using System;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class Default6 : System.Web.UI.Page
    {
        // protected int totalRowCount = 0; (用不上了)
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gvw = (GridView)sender;
            TextBox TextBox_PageSize = (TextBox)gvw.BottomPagerRow.FindControl("TextBox_PageSize");
            bool success = Int32.TryParse(TextBox_PageSize.Text, out int number);
            if (success)
            {
                gvw.PageSize = number;
            }

            if (e.NewPageIndex < 0)
            {
                TextBox pageNum = (TextBox)gvw.BottomPagerRow.FindControl("txtNewPageIndex");
                int Pa = int.Parse(pageNum.Text);
                if (Pa <= 0)
                {
                    gvw.PageIndex = 0;
                }
                else
                {
                    gvw.PageIndex = Pa - 1;
                }
            }
            else
            {
                gvw.PageIndex = e.NewPageIndex;
            }
            //Bind();
        }

        //(用不上了)
        //protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
        //{
        //    totalRowCount = e.AffectedRows;
        //}
    }
}




其中 Bootstrap 按鈕樣式可看


********************************************************************************

如果網頁另有「分頁顯示」、「全部顯示」按鈕。.cs要增加Code。

WebForm1.aspx


<asp:Button ID="Button_ShowAll" runat="server" Text="全部顯示" OnClick="Button_ShowAll_Click" CssClass="btn btn-primary btn-xs" />
<asp:Button ID="Button_ShowPage" runat="server" Text="分頁顯示" OnClick="Button_ShowPage_Click" CssClass="btn btn-primary btn-xs" />

WebForm1.aspx.cs

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    //Button_Query_Click(sender, e);
}
protected void Button_ShowAll_Click(object sender, EventArgs e)
{
    GridView1.AllowPaging = false;
    //Button1_Query_Click(sender, e);
}
protected void Button_ShowPage_Click(object sender, EventArgs e)
{
    GridView1.AllowPaging = true;
    //Button1_Query_Click(sender, e);
}

(完)

相關

[研究][ASP.NET]設定 Gridview 分頁樣式(四):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 共X筆
https://shaurong.blogspot.com/2024/04/aspnet-gridview-xx-x-x-x_12.html

[研究][ASP.NET]設定 Gridview 分頁樣式(三):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 共X筆
https://shaurong.blogspot.com/2024/04/aspnet-gridview-xx-x-x-x.html

[研究]ASP.NET,共用GridView1_PageIndexChanging (三)
https://shaurong.blogspot.com/2024/04/aspnetgridview1pageindexchanging_23.html

[研究]ASP.NET,共用GridView1_PageIndexChanging (二)
https://shaurong.blogspot.com/2024/04/aspnetgridview1pageindexchanging_3.html

[研究]ASP.NET,共用GridView1_PageIndexChanging (一)
https://shaurong.blogspot.com/2024/04/aspnetgridview1pageindexchanging.html

[研究][ASP.NET]設定 Gridview 分頁樣式(二):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆
https://shaurong.blogspot.com/2020/04/aspnet-gridview-xx-x-x.html

[研究][ASP.NET]設定 Gridview 分頁樣式(一):第X頁 共X頁 第一頁 上一頁 下一頁 最後一頁 跳頁
http://shaurong.blogspot.com/2019/10/aspnet-gridview-x-x.html

Extending GridView Control: Using a DropDownList Pager - CodeProject
這個可以在 PagerTemplate 顯示總資料筆數,但作法很複雜

Aspdotnet-Sharepoint: Custom pager inside the gridview pager template using c#

[ASP.NET] 自訂 GridView PagerTemplate 分頁 | .Net 蛤什麼? - 點部落


2024年4月10日 星期三

[研究][ASP.NET]設定 Gridview 分頁樣式(三):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 共X筆 (再改良版)

[研究][ASP.NET]設定 Gridview 分頁樣式(三):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 共X筆 (再改良版)

2024-04-10

本篇為下面這篇的改良,客製化自訂分頁樣式增加了設定「共X筆」功能 (感覺改到有點過度複雜了)

[研究][ASP.NET]設定 Gridview 分頁樣式(二):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆
https://shaurong.blogspot.com/2020/04/aspnet-gridview-xx-x-x.html

Default6.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default6.aspx.cs"
    Inherits="WebApplication1.Default6" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:SqlDataSource ID="SqlDataSource2" runat="server"
            ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>"
            SelectCommand="SELECT N'全部' AS [Field1] UNION SELECT [Field1] FROM [MyTable]">
        </asp:SqlDataSource>
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
            DataSourceID="SqlDataSource2" DataTextField="Field1" DataValueField="Field1">
        </asp:DropDownList>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>"
            SelectCommand="SELECT * FROM [MyTable] WHERE (Field1=@Field1 OR @Field1=N'全部')"
            OnSelected="SqlDataSource1_Selected">
            <SelectParameters>
                <asp:ControlParameter ControlID="DropDownList1" Name="Field1" PropertyName="SelectedValue" />
            </SelectParameters>
        </asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
            AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="SN"
            DataSourceID="SqlDataSource1"
            OnPageIndexChanging="GridView1_PageIndexChanging">
            <Columns>
                <asp:BoundField DataField="SN" HeaderText="SN" InsertVisible="False" ReadOnly="True" SortExpression="SN" />
                <asp:BoundField DataField="Field1" HeaderText="Field1" SortExpression="Field1" />
                <asp:BoundField DataField="Field2" HeaderText="Field2" SortExpression="Field2" />
            </Columns>
            <PagerTemplate>
                <table>
                    <tr>
                        <td style="text-align: right">第&nbsp;<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                        共&nbsp;<asp:Label ID="lblPageCount" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageCount %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                        <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="第一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" CommandName="Page" Text="上一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" CommandName="Page" Text="下一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" CommandName="Page" Text="最後一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        跳到第<asp:TextBox ID="txtNewPageIndex" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageIndex + 1%>" Width="100px"></asp:TextBox>頁&nbsp;
                        每頁顯示<asp:TextBox ID="TextBox_PageSize" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageSize %>" Width="100px"></asp:TextBox>筆&nbsp;
                        共&nbsp;<asp:Label ID="lblTotalRowCount" runat="server" Text="<%# totalRowCount.ToString() %>" ForeColor="Blue" />&nbsp;筆&nbsp;
                        <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;
                        </td>
                    </tr>
                </table>
            </PagerTemplate>
        </asp:GridView>
    </form>
</body>
</html>



Default6.aspx.cs

using System;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class Default6 : System.Web.UI.Page
    {
        protected int totalRowCount = 0;
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gvw = (GridView)sender;
            TextBox TextBox_PageSize = (TextBox)gvw.BottomPagerRow.FindControl("TextBox_PageSize");
            bool success = Int32.TryParse(TextBox_PageSize.Text, out int number);
            if (success)
            {
                gvw.PageSize = number;
            }

            if (e.NewPageIndex < 0)
            {
                TextBox pageNum = (TextBox)gvw.BottomPagerRow.FindControl("txtNewPageIndex");
                int Pa = int.Parse(pageNum.Text);
                if (Pa <= 0)
                {
                    gvw.PageIndex = 0;
                }
                else
                {
                    gvw.PageIndex = Pa - 1;
                }
            }
            else
            {
                gvw.PageIndex = e.NewPageIndex;
            }
            //Bind();
        }

        protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
        {
            totalRowCount = e.AffectedRows;
        }
    }
}




其中 Bootstrap 按鈕樣式可看


********************************************************************************

如果網頁另有「分頁顯示」、「全部顯示」按鈕。.cs要增加Code。

WebForm1.aspx


<asp:Button ID="Button_ShowAll" runat="server" Text="全部顯示" OnClick="Button_ShowAll_Click" CssClass="btn btn-primary btn-xs" />
<asp:Button ID="Button_ShowPage" runat="server" Text="分頁顯示" OnClick="Button_ShowPage_Click" CssClass="btn btn-primary btn-xs" />

WebForm1.aspx.cs

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    //Button_Query_Click(sender, e);
}
protected void Button_ShowAll_Click(object sender, EventArgs e)
{
    GridView1.AllowPaging = false;
    //Button1_Query_Click(sender, e);
}
protected void Button_ShowPage_Click(object sender, EventArgs e)
{
    GridView1.AllowPaging = true;
    //Button1_Query_Click(sender, e);
}

補,可改用下面

共&nbsp;<asp:Label ID="Label1" runat="server" Text="<%#  ((IEnumerable)((SqlDataSource)((GridView)Container.Parent.Parent).DataSourceObject).Select(DataSourceSelectArguments.Empty)).Cast<object>().Count() %>" ForeColor="Blue" />&nbsp;筆&nbsp;

或簡化如下

共&nbsp;<asp:Label ID="Label1" runat="server" Text="<%#  ((SqlDataSource)((GridView)Container.Parent.Parent).DataSourceObject).Select(DataSourceSelectArguments.Empty).Cast<object>().Count() %>" ForeColor="Blue" />&nbsp;筆&nbsp;

實際測試可用。                   

(完)


相關

[研究][ASP.NET]設定 Gridview 分頁樣式(三):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 共X筆
https://shaurong.blogspot.com/2024/04/aspnet-gridview-xx-x-x-x.html

[研究]ASP.NET,共用GridView1_PageIndexChanging (三)
https://shaurong.blogspot.com/2024/04/aspnetgridview1pageindexchanging_23.html

[研究]ASP.NET,共用GridView1_PageIndexChanging (二)
https://shaurong.blogspot.com/2024/04/aspnetgridview1pageindexchanging_3.html

[研究]ASP.NET,共用GridView1_PageIndexChanging (一)
https://shaurong.blogspot.com/2024/04/aspnetgridview1pageindexchanging.html

[研究][ASP.NET]設定 Gridview 分頁樣式(二):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆
https://shaurong.blogspot.com/2020/04/aspnet-gridview-xx-x-x.html

[研究][ASP.NET]設定 Gridview 分頁樣式(一):第X頁 共X頁 第一頁 上一頁 下一頁 最後一頁 跳頁
http://shaurong.blogspot.com/2019/10/aspnet-gridview-x-x.html

Extending GridView Control: Using a DropDownList Pager - CodeProject
這個可以在 PagerTemplate 顯示總資料筆數,但作法很複雜

Aspdotnet-Sharepoint: Custom pager inside the gridview pager template using c#

[ASP.NET] 自訂 GridView PagerTemplate 分頁 | .Net 蛤什麼? - 點部落


2022年3月9日 星期三

[研究][ASP.NET]GridView 沒資料時時也顯示表頭欄位名稱

[研究][ASP.NET]GridView 沒資料時時也顯示表頭欄位名稱

2022-03-09

GridView如果SELECT沒有撈到任何資料,預設是空白一片,不顯示任何東西。

要自己手動設定 EmptyDataText 值,就會顯示該值,例如:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication12.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:TestDBConnectionString %>" 
                SelectCommand="SELECT * FROM [Products]">
            </asp:SqlDataSource>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="no" DataSourceID="SqlDataSource1" EmptyDataText="無資料">
                <Columns>
                    <asp:BoundField DataField="no" HeaderText="no" InsertVisible="False" 
                        ReadOnly="True" SortExpression="no" />
                    <asp:BoundField DataField="product" HeaderText="product" SortExpression="product" />
                    <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" />
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>


如果希望,沒資料時時也顯示表頭欄位名稱,GridView 並不支援,沒有簡便設定方式,只能自己寫 CODE 或用其他方式達成,例如用 <EmptyDataTemplate> 達到。

在Visual Studio 的 GridView 上選「編輯樣板」


(下圖) 切換到 EmptyDataTemplate,隨便寫點字,選「結束樣板編輯」

回到 Visual Studio 2022 的「原始碼」畫面,手動編寫 <EmptyDataTemplate> 內容


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication12.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:TestDBConnectionString %>" 
                SelectCommand="SELECT * FROM [Products]">
            </asp:SqlDataSource>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="no" DataSourceID="SqlDataSource1" EmptyDataText="自訂">
                <Columns>
                    <asp:BoundField DataField="no" HeaderText="no" InsertVisible="False" 
                        ReadOnly="True" SortExpression="no" />
                    <asp:BoundField DataField="product" HeaderText="product" SortExpression="product" />
                    <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" />
                </Columns>
                <EmptyDataTemplate>
                    <table border="1">
                        <tr>
                            <td>no</td>
                            <td>product</td>
                            <td>price</td>
                        </tr>
                        <tr>
                            <td colspan="3">無資料</td>
                        </tr>
                    </table>
                </EmptyDataTemplate>
            </asp:GridView>
        </div>
    </form>
</body>
</html>

結果 EmptyDataText 有設定值 (不管是甚麼) 且<EmptyDataTemplate> 有內容,就會顯示 <EmptyDataTemplate> 內容。

因為這是硬生生手動作出的,不是 GridView 支援的,所以欄位有改名、增加、減少,這裡都不會自動反映。

(完)

2020年4月8日 星期三

[研究][ASP.NET]設定 Gridview 分頁樣式(二):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆

[研究][ASP.NET]設定 Gridview 分頁樣式(二):第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆 (改良版)

2020-04-08, 2022-01-22, 2022-04-01

本篇為下面這篇的改良,客製化自訂分頁樣式增加了設定「每頁顯示X筆」功能

[研究][ASP.NET]設定 Gridview 分頁樣式為:第X頁 共X頁 第一頁 上一頁 下一頁 最後一頁 跳頁
http://shaurong.blogspot.com/2019/10/aspnet-gridview-x-x.html



Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks2017ConnectionString %>"
                SelectCommand="SELECT * FROM [AdventureWorks2017].[Person].[Person]"></asp:SqlDataSource>
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="BusinessEntityID" OnPageIndexChanging="GridView1_PageIndexChanging">
                <Columns>
                    <asp:BoundField DataField="BusinessEntityID" HeaderText="BusinessEntityID" ReadOnly="True" SortExpression="BusinessEntityID" />
                    <asp:BoundField DataField="PersonType" HeaderText="PersonType" SortExpression="PersonType" />
                    <asp:CheckBoxField DataField="NameStyle" HeaderText="NameStyle" SortExpression="NameStyle" />
                    <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                    <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                </Columns>
                <PagerTemplate>
            <table>
                <tr>
                    <td style="text-align: right">第&nbsp;<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                        共&nbsp;<asp:Label ID="lblPageCount" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageCount %>" ForeColor="Blue" ></asp:Label>&nbsp;頁,
                        <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="第一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" CommandName="Page" Text="上一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" CommandName="Page" Text="下一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" CommandName="Page" Text="最後一頁" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;&nbsp;
                        跳到第<asp:TextBox ID="txtNewPageIndex" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageIndex + 1%>" Width="100px"></asp:TextBox>頁&nbsp;
                        每頁顯示<asp:TextBox ID="TextBox_PageSize" runat="server"  Text="<%# ((GridView)Container.Parent.Parent).PageSize %>"  Width="100px"></asp:TextBox>筆&nbsp;
                        <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO" CssClass="btn btn-primary btn-xs"></asp:LinkButton>&nbsp;
                    </td>
                </tr>
            </table>
        </PagerTemplate>
            </asp:GridView>
        </div>
    </form>
</body>
</html>


其中 Bootstrap 按鈕樣式可看

Default.axpx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
       
        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gvw = (GridView)sender;
            TextBox TextBox_PageSize = (TextBox)gvw.BottomPagerRow.FindControl("TextBox_PageSize");
            bool success = Int32.TryParse(TextBox_PageSize.Text, out int number);
            if (success)
            {
                gvw.PageSize = number;
            }

            if (e.NewPageIndex < 0)
            {
                TextBox pageNum = (TextBox)gvw.BottomPagerRow.FindControl("txtNewPageIndex");
                int Pa = int.Parse(pageNum.Text);
                if (Pa <= 0)
                {
                    gvw.PageIndex = 0;
                }
                else
                {
                    gvw.PageIndex = Pa - 1;
                }
            }
            else
            {
                gvw.PageIndex = e.NewPageIndex;
            }
            //Bind();
        }
    }
}

********************************************************************************

總筆數的測試1

<PagerTemplate> 和 </PagerTemplate> 之間加上總筆數 (不是該分頁的筆數)

總共&nbsp;<asp:Label ID="lblTotalCount" runat="server" ForeColor="Blue"></asp:Label>&nbsp;筆,

然後 GridView1_PageIndexChanging() 中 GridView gvw = (GridView)sender;  之下增加

gvw.AllowPaging = false;

Label lblTotalCount = (Label)gvw.BottomPagerRow.FindControl("lblTotalCount");

lblTotalCount.Text = gvw.Rows.Count.ToString();

gvw.AllowPaging = true;

實際測試 lblTotalCount 永遠會是空的。

********************************************************************************

總筆數的測試2

<PagerTemplate> 和 </PagerTemplate> 之間加上總筆數 (不是該分頁的筆數)

總共&nbsp;<asp:Label ID="lblTotalCount" runat="server" ForeColor="Blue"></asp:Label>&nbsp;筆,

然後 GridView1_PageIndexChanging() 中 GridView gvw = (GridView)sender;  之下增加

Label lblTotalCount = (Label)gvw.BottomPagerRow.FindControl("lblTotalCount");

lblTotalCount.Text = "123";

實際測試 lblTotalCount 永遠會是空的,不會顯示 123。

********************************************************************************

總筆數的測試3

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)

{

    if (e.Row.RowType == DataControlRowType.Pager)

    {

        GridView gvw = (GridView)sender;

        gvw.AllowPaging = false;

        Label lblTotalCount = (Label)e.Row.FindControl("lblTotalCount");

        lblTotalCount.Text = gvw.Rows.Count.ToString();

        gvw.AllowPaging = true;

    }

}

實際測試發現 gvw.AllowPaging = true; 執行後會跳到 GridView gvw = (GridView)sender; 造成無限迴圈,畫面永遠不顯示。

********************************************************************************

實際測試,如果<PagerTemplate></PagerTemplate>不只一組,會以最下方的一組為準,無法同時使用多組。

********************************************************************************

DataPager控制項無法搭配 GridView使用,會出現錯誤

控制項 'GridView1' 未實作 IPageableItemContainer。

下面這篇可參考

GridView with DataPager in ASP.NET 4.0 - CodeProject
https://www.codeproject.com/Tips/725639/GridView-with-DataPager-in-ASP-NET-4-0

********************************************************************************

這3個無法共存,PagerSettings 若有多個,以後面設定的為準,但<PagerTemplate>若存在,PagerSettings 就無效不會顯示。

<PagerTemplate></PagerTemplate>

<PagerSettings Mode="NextPreviousFirstLast" />

<PagerSettings Mode="Numeric" />

********************************************************************************

2022-01-22

如果網頁另有「分頁顯示」、「全部顯示」按鈕。.cs要增加Code。

WebForm1.aspx


<asp:Button ID="Button_ShowAll" runat="server" Text="全部顯示" OnClick="Button_ShowAll_Click" CssClass="btn btn-primary btn-xs" />
<asp:Button ID="Button_ShowPage" runat="server" Text="分頁顯示" OnClick="Button_ShowPage_Click" CssClass="btn btn-primary btn-xs" />

WebForm1.aspx.cs

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    //Button_Query_Click(sender, e);
}
protected void Button_ShowAll_Click(object sender, EventArgs e)
{
    GridView1.AllowPaging = false;
    //Button1_Query_Click(sender, e);
}
protected void Button_ShowPage_Click(object sender, EventArgs e)
{
    GridView1.AllowPaging = true;
    //Button1_Query_Click(sender, e);
}


(完)

相關

[研究][ASP.NET]設定 Gridview 分頁樣式為:第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆
https://shaurong.blogspot.com/2020/04/aspnet-gridview-xx-x-x.html

[研究][ASP.NET]設定 Gridview 分頁樣式為:第X頁 共X頁 第一頁 上一頁 下一頁 最後一頁 跳頁
http://shaurong.blogspot.com/2019/10/aspnet-gridview-x-x.html

Extending GridView Control: Using a DropDownList Pager - CodeProject
這個可以在 PagerTemplate 顯示總資料筆數,但作法很複雜

Aspdotnet-Sharepoint: Custom pager inside the gridview pager template using c#

[ASP.NET] 自訂 GridView PagerTemplate 分頁 | .Net 蛤什麼? - 點部落


2019年10月2日 星期三

[研究][ASP.NET]設定 Gridview 分頁樣式(一):第X頁 共X頁 第一頁 上一頁 下一頁 最後一頁 跳頁

[研究][ASP.NET]設定 Gridview 分頁樣式(一):第X頁 共X頁 第一頁 上一頁 下一頁 最後一頁 跳頁

2019-10-02
2020-04-08 更新

建議改用下面的改良版
[研究][ASP.NET]設定 Gridview 分頁樣式為:第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆
https://shaurong.blogspot.com/2020/04/aspnet-gridview-xx-x-x.html

******

C#
ASP.NET
WebForm
Visual Studio 2019 v16.3.1


Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks2017ConnectionString %>"
                SelectCommand="SELECT * FROM [AdventureWorks2017].[Person].[Person]"></asp:SqlDataSource>
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="BusinessEntityID" OnPageIndexChanging="GridView1_PageIndexChanging">
                <Columns>
                    <asp:BoundField DataField="BusinessEntityID" HeaderText="BusinessEntityID" ReadOnly="True" SortExpression="BusinessEntityID" />
                    <asp:BoundField DataField="PersonType" HeaderText="PersonType" SortExpression="PersonType" />
                    <asp:CheckBoxField DataField="NameStyle" HeaderText="NameStyle" SortExpression="NameStyle" />
                    <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                    <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                </Columns>
                <PagerTemplate>
            <table>
                <tr>
                    <td style="text-align: right">第&nbsp;<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                                共&nbsp;<asp:Label ID="lblPageCount" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageCount %>" ForeColor="Blue"></asp:Label>&nbsp;頁,
                                <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="第一頁"></asp:LinkButton>&nbsp;&nbsp;
                                <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" CommandName="Page" Text="上一頁"></asp:LinkButton>&nbsp;&nbsp;
                                <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" CommandName="Page" Text="下一頁"></asp:LinkButton>&nbsp;&nbsp;
                                <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" CommandName="Page" Text="最後一頁"></asp:LinkButton>&nbsp;&nbsp;
                                <asp:TextBox ID="txtNewPageIndex" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageIndex + 1%>" Width="120px"></asp:TextBox>
                        <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO"></asp:LinkButton>
                    </td>
                </tr>
            </table>
        </PagerTemplate>
            </asp:GridView>
        </div>
    </form>
</body>
</html>



Default.axpx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
         
        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gvw = (GridView)sender;
            if (e.NewPageIndex < 0)
            {
                TextBox pageNum = (TextBox)gvw.BottomPagerRow.FindControl("txtNewPageIndex");
                int Pa = int.Parse(pageNum.Text);
                if (Pa <= 0)
                {
                    gvw.PageIndex = 0;
                }
                else
                {
                    gvw.PageIndex = Pa - 1;
                }
            }
            else
            {
                gvw.PageIndex = e.NewPageIndex;
            }
            //Bind();
        }
    }
}

(完)

相關

[研究][ASP.NET]設定 Gridview 分頁樣式為:第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆
https://shaurong.blogspot.com/2020/04/aspnet-gridview-xx-x-x.html

[研究][ASP.NET]設定 Gridview 分頁樣式為:第X頁 共X頁 第一頁 上一頁 下一頁 最後一頁 跳頁
http://shaurong.blogspot.com/2019/10/aspnet-gridview-x-x.html


2017年7月7日 星期五

[研究][C#][ASP.NET][WebForm] GridView 事件執行順序

[研究][C#][ASP.NET][WebForm] GridView 事件執行順序

2017-07-07

Visual Studio 2017

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication6.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestDBConnectionString %>" DeleteCommand="DELETE FROM [Table1] WHERE [no] = @no" InsertCommand="INSERT INTO [Table1] ([cname], [addr]) VALUES (@cname, @addr)" SelectCommand="SELECT * FROM [Table1]" UpdateCommand="UPDATE [Table1] SET [cname] = @cname, [addr] = @addr WHERE [no] = @no">
            <DeleteParameters>
                <asp:Parameter Name="no" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="cname" Type="String" />
                <asp:Parameter Name="addr" Type="String" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="cname" Type="String" />
                <asp:Parameter Name="addr" Type="String" />
                <asp:Parameter Name="no" Type="Int32" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" OnPageIndexChanged="GridView1_PageIndexChanged" OnCallingDataMethods="GridView1_CallingDataMethods" OnCreatingModelDataSource="GridView1_CreatingModelDataSource" OnDataBinding="GridView1_DataBinding" OnDataBound="GridView1_DataBound" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound" OnRowDeleted="GridView1_RowDeleted" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdated="GridView1_RowUpdated" OnRowUpdating="GridView1_RowUpdating" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnSelectedIndexChanging="GridView1_SelectedIndexChanging" OnSorted="GridView1_Sorted" OnSorting="GridView1_Sorting" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="no" DataSourceID="SqlDataSource1" OnDisposed="GridView1_Disposed" OnInit="GridView1_Init" OnLoad="GridView1_Load" OnPreRender="GridView1_PreRender" OnRowCreated="GridView1_RowCreated" OnUnload="GridView1_Unload">
            <Columns>
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
                <asp:BoundField DataField="no" HeaderText="no" InsertVisible="False" ReadOnly="True" SortExpression="no" />
                <asp:BoundField DataField="cname" HeaderText="cname" SortExpression="cname" />
                <asp:BoundField DataField="addr" HeaderText="addr" SortExpression="addr" />
            </Columns>
        </asp:GridView>
        <br />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    </form>
</body>
</html>


Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication6
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "Page_Load<br />";
        }

        protected void GridView1_PageIndexChanged(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_PageIndexChanged<br />";
        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_PageIndexChanging<br />";
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowCancelingEdit<br />";
        }

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowCommand<br />";
        }

        protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowDeleted<br />";
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowDeleting<br />";
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowEditing<br />";
        }

        protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowUpdated<br />";
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowUpdating<br />";
        }

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_SelectedIndexChanged<br />";
        }

        protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_SelectedIndexChanging<br />";
        }

        protected void GridView1_Sorted(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_Sorted<br />";
        }

        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_Sorting<br />";
        }

        protected void GridView1_CallingDataMethods(object sender, CallingDataMethodsEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_CallingDataMethods<br />";
        }

        protected void GridView1_CreatingModelDataSource(object sender, CreatingModelDataSourceEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_CreatingModelDataSource<br />";
        }

        protected void GridView1_DataBinding(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_DataBinding<br />";
        }

        protected void GridView1_DataBound(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_DataBound<br />";
        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowDataBound<br />";
        }

        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_RowCreated<br />";
        }

        protected void GridView1_Disposed(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_Disposed<br />";
        }

        protected void GridView1_Init(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_Init<br />";
        }

        protected void GridView1_Load(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_Load<br />";
        }

        protected void GridView1_PreRender(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_PreRender<br />";
        }

        protected void GridView1_Unload(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "GridView1_Unload<br />";
        }
    }
}

執行後

GridView1_Init
Page_Load
GridView1_Load
GridView1_DataBinding
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_DataBound
GridView1_PreRender
********************************************************************************
按下「編輯」
Page_Load
GridView1_Load
GridView1_RowCommand
GridView1_RowEditing
GridView1_DataBinding
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_DataBound
GridView1_PreRender
********************************************************************************
按下「更新」(按下「編輯」後)
Page_Load
GridView1_Load
GridView1_RowCommand
GridView1_RowUpdating
GridView1_RowUpdated
GridView1_DataBinding
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_DataBound
GridView1_PreRender
********************************************************************************
按下「取消」(按下「編輯」後)
Page_Load
GridView1_Load
GridView1_RowCommand
GridView1_RowCancelingEdit
GridView1_DataBinding
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_DataBound
GridView1_PreRender
********************************************************************************點選欄位標題進行排序
Page_Load
GridView1_Load
GridView1_RowCommand
GridView1_Sorting
GridView1_Sorted
GridView1_DataBinding
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_DataBound
GridView1_PreRender
********************************************************************************
按下「選取」
Page_Load
GridView1_Load
GridView1_RowCommand
GridView1_SelectedIndexChanging
GridView1_SelectedIndexChanged
GridView1_PreRender
********************************************************************************
按下「刪除」
Page_Load
GridView1_Load
GridView1_RowCommand
GridView1_RowDeleting
GridView1_RowDeleted
GridView1_DataBinding
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_RowCreated
GridView1_RowDataBound
GridView1_DataBound
GridView1_PreRender

(完)