ASP.NET 網頁製作教本 – 從基本語法學起

71
ASP.NET ASP.NET 網網網網網網 網網網網網網 網網網網網網網 網網網網網網網 8 8 DataGrid DataGrid DataTable DataTable

description

ASP.NET 網頁製作教本 – 從基本語法學起. 第 8 章 DataGrid 與 DataTable. 8-1 DataTable 的資料結構. DataTable 的資料結構. DataTable 的建構:開啟資料庫. Table01.aspx Part I. DataTable 的建構:開啟資料庫< HR> - PowerPoint PPT Presentation

Transcript of ASP.NET 網頁製作教本 – 從基本語法學起

Page 1: ASP.NET  網頁製作教本  –  從基本語法學起

ASP.NET ASP.NET 網頁製作教本網頁製作教本 – – 從基本語法學起從基本語法學起

第 第 8 8 章 章 DataGrid DataGrid 與 與 DataTableDataTable

Page 2: ASP.NET  網頁製作教本  –  從基本語法學起

8-1 8-1 DataTable DataTable 的資料結構的資料結構

Page 3: ASP.NET  網頁製作教本  –  從基本語法學起

DataTable DataTable 的資料結構的資料結構

Page 4: ASP.NET  網頁製作教本  –  從基本語法學起

DataTable DataTable 的建構:開啟資料的建構:開啟資料庫庫

員工資料成績單

股票代號 股票名稱 收盤價 漲跌 最高價 最低價 成交量0001 鴻 運 18.7 -0.3 18.8 18.6 35500002 福 元 24.2 -0.5 24.6 24.2 118010003 成 長 24.9 -0.1 25 24.9 1770004 國 民 21.3 -0.4 21.5 21.1 17380005 成 功 17.2 -0.4 17.5 17.2 1750006 鴻 福 17.5 -0.3 17.6 17.5 980011 和 信 16.1 -0.3 16.3 15.6 7240012 多 元 13.35 -0.05 13.4 13.1 214090013 永 昌 10.9 -0.15 11 10.8 19760014 統 信 17.9 -0.1 18 17.8 7370015 富 邦 17.6 -0.3 17.8 17.5 27140018 怡 富 19.6 -0.6 20 19.6 6630

股票行情表

Page 5: ASP.NET  網頁製作教本  –  從基本語法學起

Table01.aspxTable01.aspx Part I Part I

<!-- #include File="Mdb.vb" --> 

<Html>

<Body BgColor="White">

<H3>DataTable的建構:開啟資料庫 <HR></H3>

<asp:Label runat="server" id="Msg" /><p>

<HR></Body>

</Html>

 

Page 6: ASP.NET  網頁製作教本  –  從基本語法學起

Table01.aspxTable01.aspx Part II Part II<script Language="VB" runat="server">

 

Sub Page_Load(sender As Object, e As EventArgs)

Dim Table As System.Data.DataTable

Table = OpenMdbTable( "Sample.mdb", " 股票行情表 " ) If Not Table Is Nothing Then Msg.Text = "已經建構好 DataTable!" End If

End Sub

 

</script>

Page 7: ASP.NET  網頁製作教本  –  從基本語法學起

Table02.aspxTable02.aspx Part I Part I<%@ Import Namespace="System.Data" %>

<!-- #include File="Mdb.vb" -->

 

<Html>

<Body BgColor="White">

<H3>DataTable 的建構:開啟資料庫 <HR></H3>

<asp:Label runat="server" id="Msg" /><p>

<HR></Body>

</Html>

Page 8: ASP.NET  網頁製作教本  –  從基本語法學起

Table02.aspxTable02.aspx Part II Part II<script Language="VB" runat="server">

 

Sub Page_Load(sender As Object, e As EventArgs)

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "股票行情表 " )

If Not Table Is Nothing Then

Msg.Text = "已經建構好 DataTable!"

End If

End Sub

 

</script>

Page 9: ASP.NET  網頁製作教本  –  從基本語法學起

DataTable DataTable 的建構:逐欄逐列的建構:逐欄逐列填入資料填入資料

將資料填入 將資料填入 DataTable DataTable 大致可以分成大致可以分成三道程序:三道程序:

1.1. 建立 建立 DataTable DataTable 物件物件:使用 :使用 New New DataTable DataTable 的方式先建立好物件的方式先建立好物件 。 。

2.2. 建立欄位建立欄位:包含欄位抬頭及其資料型別:包含欄位抬頭及其資料型別的建立的建立 。 。

3.3. 加入資料列加入資料列:根據實際的資料列數:根據實際的資料列數 (( 或或稱「資料筆數」稱「資料筆數」 )) ,逐列加入於,逐列加入於DataTableDataTable 之中。之中。

Page 10: ASP.NET  網頁製作教本  –  從基本語法學起

實例實例 (1)(1)

有四個陣列資料如下:有四個陣列資料如下:

Dim 姓名 () = { “ 陳桶一” , “ 黃光權” , “ 胡生妙” , “王為全” , _ “ 李日正” , “ 劉德菖” , “ 方正一” , “ 劉康寶” , _ " 謝掬花 ", " 王美蘭 ", " 徐小噹 ", " 葉小毛 " }Dim 國文 () = { 90, 58, 41, 95, 59, 28, 98, 0, 95, 41, 91, 0 }Dim 英文 () = { 76, 77, 14, 97, 66, 11, 100, 0, 74, 46, 99, 10 }Dim 數學 () = { 98, 75, 33, 87, 57, 33, 100, 10, 89, 49, 84, 0 }

Page 11: ASP.NET  網頁製作教本  –  從基本語法學起

實例實例 (2)(2) 將其填入 將其填入 DataTable DataTable 成為以下結構:成為以下結構:

姓名 國文 英文 數學陳桶一 90 76 98

黃光權 58 77 75

胡生妙 41 14 33

王為全 95 97 87

李日正 59 66 57

劉德菖 28 11 33

方正一 98 100 100

劉康寶 0 0 10

謝掬花 95 74 89

王美蘭 41 46 49

徐小噹 91 99 84

葉小毛 0 10 0

Page 12: ASP.NET  網頁製作教本  –  從基本語法學起

Table03.aspx Table03.aspx 節錄節錄 Part I,IIPart I,II' Part 1: 宣告並且建立 DataTable 物件

Dim Table As New DataTable

' Part 2: 建立欄位

Table.Columns.Add(New DataColumn("姓名 ", GetType(String)))

Table.Columns.Add(New DataColumn("國文 ", GetType(Integer)))

Table.Columns.Add(New DataColumn("英文 ", GetType(Integer)))

Table.Columns.Add(New DataColumn("數學 ", GetType(Integer)))

 

Page 13: ASP.NET  網頁製作教本  –  從基本語法學起

Table03.aspx Table03.aspx 節錄節錄 Part IIIPart III' Part 3: 加入資料列

For I = 0 To UBound(姓名 )

Dim Row As DataRow

Row = Table.NewRow()

Row("姓名 ") = 姓名 (I)

Row("國文 ") = 國文 (I)

Row("英文 ") = 英文 (I)

Row("數學 ") = 數學 (I)

Table.Rows.Add(Row)

Next

Page 14: ASP.NET  網頁製作教本  –  從基本語法學起

8-2 8-2 DataGrid DataGrid 初體驗初體驗

Page 15: ASP.NET  網頁製作教本  –  從基本語法學起

DataGrid DataGrid 的安插與資料繫結的安插與資料繫結

Page 16: ASP.NET  網頁製作教本  –  從基本語法學起

Grid01.aspx Part IGrid01.aspx Part I <%@ Import Namespace="System.Data" %>

<!-- #include File="Mdb.vb" -->

 

<Html>

<Body BgColor="White"><Center>

<H3>Grid01.aspx -- 用 DataGrid 顯示 DataTable 的資料<HR></H3><asp:DataGrid runat="server" id="MyGrid" />

<p>

<HR></Center></Body>

</Html>

Page 17: ASP.NET  網頁製作教本  –  從基本語法學起

Grid01.aspx Part IIGrid01.aspx Part II<script Language="VB" runat="server">

 

Sub Page_Load(sender As Object, e As EventArgs)

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "股票行情表 " )

' DataGrid 與 DataTable 的資料繫結

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 18: ASP.NET  網頁製作教本  –  從基本語法學起

開啟其他資料庫開啟其他資料庫 (( 表表 ))

Page 19: ASP.NET  網頁製作教本  –  從基本語法學起

設定 設定 DataGrid DataGrid 的外觀的外觀 想改變 想改變 DataGrid DataGrid 的外觀,讓它從下圖的外觀,讓它從下圖

(( 左左 )) 變成下圖變成下圖 (( 右右 )) ::

Grid02.aspx Grid03.aspx

Page 20: ASP.NET  網頁製作教本  –  從基本語法學起

Grid03.aspx Part IGrid03.aspx Part I <%@ Import Namespace="System.Data" %><!-- #include File="Mdb.vb" -->

 

<Html>

<Body BgColor="White"><Center>

<H3>Grid03.aspx -- 設定 DataGrid的外觀 <HR></H3>

<asp:DataGrid runat="server" id="MyGrid"

HeaderStyle-BackColor="#AAAADD"

AlternatingItemStyle-BackColor="#FFFFC0"

BorderColor="Black"

CellPadding="2"

CellSpacing="0" />

<p>

<HR></Center></Body>

</Html>

Page 21: ASP.NET  網頁製作教本  –  從基本語法學起

Grid03.aspx Part IIGrid03.aspx Part II<script Language="VB" runat="server">

 

Sub Page_Load(sender As Object, e As EventArgs)

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " )

' DataGrid 與 DataTable 的資料繫結

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

 

</script>

Page 22: ASP.NET  網頁製作教本  –  從基本語法學起

設定 設定 DataGrid DataGrid 的外觀—的外觀—特殊的屬性 特殊的屬性 Part IPart I

HeaderStyle-BackColorHeaderStyle-BackColor ::用來設定第一用來設定第一列列 (( 抬頭列抬頭列 )) 的背景顏色。的背景顏色。

HeaderStyle-BackColor 屬性用來設定這一列的背景顏色

Page 23: ASP.NET  網頁製作教本  –  從基本語法學起

設定 設定 DataGrid DataGrid 的外觀—的外觀—特殊的屬性 特殊的屬性 Part IIPart II

AlternatingItemStyle-BackColorAlternatingItemStyle-BackColor ::用來設用來設定間隔一列的背景顏色。定間隔一列的背景顏色。

BorderColorBorderColor ::表格邊框的顏色。表格邊框的顏色。

AlternatingItemStyle-BackColor 屬性用來設定這一列的背景顏色

Page 24: ASP.NET  網頁製作教本  –  從基本語法學起

8-3 8-3 可以分頁瀏覽的 可以分頁瀏覽的 DataGridDataGrid

Page 25: ASP.NET  網頁製作教本  –  從基本語法學起

可以分頁瀏覽的 可以分頁瀏覽的 DataGridDataGrid

Page 26: ASP.NET  網頁製作教本  –  從基本語法學起

分頁瀏覽的基礎分頁瀏覽的基礎

下一頁連結上一頁連結

Grid04.aspx

Page 27: ASP.NET  網頁製作教本  –  從基本語法學起

Grid04.aspxGrid04.aspx Part I Part I<%@ Import Namespace="System.Data" %><!-- #include File="Mdb.vb" --> <Html><Body BgColor="White"><Center><H3>Grid04.aspx -- 分頁瀏覽的基礎 <HR></H3><Form runat="server"><asp:DataGrid runat="server" id="MyGrid" AllowPaging="True" PageSize="10" OnPageIndexChanged="ChangePage" HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" CellSpacing="0" /></Form>

Page 28: ASP.NET  網頁製作教本  –  從基本語法學起

Grid04.aspxGrid04.aspx Part II Part II<p>

<HR></Center></Body>

</Html>

 

<script Language="VB" runat="server">

 

Sub Page_Load(sender As Object, e As EventArgs)

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " ) MyGrid.DataSource = Table.DefaultView MyGrid.DataBind()

End Sub

Page 29: ASP.NET  網頁製作教本  –  從基本語法學起

Grid04.aspxGrid04.aspx Part III Part III Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs)

MyGrid.CurrentPageIndex = e.NewPageIndex

 

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " )

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

 

</script>

Page 30: ASP.NET  網頁製作教本  –  從基本語法學起

執行效能問題執行效能問題

Page_Load

ChangePage

DataGrid

Grid04.aspx第一次被瀏覽

1.

2.

Page_Load

ChangePage

DataGrid

3.

5.

4.

> 被按下

Page 31: ASP.NET  網頁製作教本  –  從基本語法學起

利用利用 IsPostBack IsPostBack 解決執行效解決執行效能問題 能問題 ((Grid04b.aspx Grid04b.aspx 節錄節錄 ))

Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then ' 網頁第一次被瀏覽

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " )

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End If

End Sub

Page 32: ASP.NET  網頁製作教本  –  從基本語法學起

Grid04c.aspx Grid04c.aspx 節錄 節錄 Part IPart I

<script Language="VB" runat="server">

 

Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " )

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 33: ASP.NET  網頁製作教本  –  從基本語法學起

Grid04c.aspx Grid04c.aspx 節錄 節錄 Part IIPart II Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then

OpenDataBase_And_BindToDataGrid()

End If

End Sub

 

Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs)

MyGrid.CurrentPageIndex = e.NewPageIndex

OpenDataBase_And_BindToDataGrid()

End Sub

 

</script>

Page 34: ASP.NET  網頁製作教本  –  從基本語法學起

將將 << 及及 >> 改成改成 上一頁上一頁 及及 下下一頁一頁

Grid04c.aspx Grid05.aspx

Page 35: ASP.NET  網頁製作教本  –  從基本語法學起

Grid05.aspxGrid05.aspx Part I Part I

<%@ Import Namespace="System.Data" %><!-- #include File="Mdb.vb" -->

 

<Html>

<Body BgColor="White">

<H3>Grid05.aspx -- 將 < 及 > 改成「上一頁」及「下一頁」 <HR></H3>

<Form runat="server">

<asp:DataGrid runat="server" id="MyGrid"

AllowPaging="True"

PageSize="10"

OnPageIndexChanged="ChangePage"

Page 36: ASP.NET  網頁製作教本  –  從基本語法學起

Grid05.aspxGrid05.aspx Part II Part II PagerStyle-HorizontalAlign="Right"

PagerStyle-NextPageText="下一頁 "

PagerStyle-PrevPageText="上一頁 "

HeaderStyle-BackColor="#AAAADD"

AlternatingItemStyle-BackColor="#FFFFC0"

BorderColor="Black"

CellPadding="2"

CellSpacing="0" />

</Form>

<p>

<HR></Center></Body>

</Html>

Page 37: ASP.NET  網頁製作教本  –  從基本語法學起

Grid05.aspxGrid05.aspx Part III Part III<script Language="VB" runat="server">

 

Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " )

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 38: ASP.NET  網頁製作教本  –  從基本語法學起

Grid05.aspxGrid05.aspx Part IV Part IV Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then

OpenDataBase_And_BindToDataGrid()

End If

End Sub

 

Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs)

MyGrid.CurrentPageIndex = e.NewPageIndex

OpenDataBase_And_BindToDataGrid()

End Sub

 

</script>

Page 39: ASP.NET  網頁製作教本  –  從基本語法學起

將將 < < 及及 > > 改成改成 1 2 3 4 1 2 3 4 …… 的頁次的頁次連結連結

Grid04c.aspx Grid06.aspx

Page 40: ASP.NET  網頁製作教本  –  從基本語法學起

Grid06.aspxGrid06.aspx Part I Part I<%@ Import Namespace="System.Data" %>

<!-- #include File="Mdb.vb" -->

 

<Html>

<Body BgColor="White"><Center>

<H3>Grid06.aspx -- 將 < 及 > 改成 1 2 3 4 … 的頁次連結<HR></H3>

<Form runat="server">

<asp:DataGrid runat="server" id="MyGrid"

AllowPaging="True"

PageSize="10"

OnPageIndexChanged="ChangePage"

Page 41: ASP.NET  網頁製作教本  –  從基本語法學起

Grid06.aspxGrid06.aspx Part II Part II PagerStyle-Mode="NumericPages"

PagerStyle-HorizontalAlign="Right"

HeaderStyle-BackColor="#AAAADD"

AlternatingItemStyle-BackColor="#FFFFC0"

BorderColor="Black"

CellPadding="2"

CellSpacing="0" />

</Form>

<p>

<HR></Center></Body>

</Html>

Page 42: ASP.NET  網頁製作教本  –  從基本語法學起

Grid06.aspxGrid06.aspx Part III Part III<script Language="VB" runat="server">

 

Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "股票行情表 " )

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 43: ASP.NET  網頁製作教本  –  從基本語法學起

Grid06.aspxGrid06.aspx Part IV Part IV Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then

OpenDataBase_And_BindToDataGrid()

End If

End Sub

 

Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs)

MyGrid.CurrentPageIndex = e.NewPageIndex

OpenDataBase_And_BindToDataGrid()

End Sub

 

</script>

Page 44: ASP.NET  網頁製作教本  –  從基本語法學起

8-4 8-4 DataGrid DataGrid 與欄位設定與欄位設定

Page 45: ASP.NET  網頁製作教本  –  從基本語法學起

自定欄位抬頭及對齊方式自定欄位抬頭及對齊方式

靠左對齊 靠右對齊

Grid05.aspx Grid07.aspx

Page 46: ASP.NET  網頁製作教本  –  從基本語法學起

Grid07.aspxGrid07.aspx Part I Part I<%@ Import Namespace="System.Data" %><!-- #include File="Mdb.vb" --> <Html><Body BgColor="White"><Center><H3>Grid07.aspx -- 自定欄位抬頭及對齊方式 <HR></H3><Form runat="server"><asp:DataGrid runat="server" id="MyGrid" AllowPaging="True" PageSize="10" OnPageIndexChanged="ChangePage" PagerStyle-HorizontalAlign="Right" PagerStyle-NextPageText="下一頁 " PagerStyle-PrevPageText="上一頁 " HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" CellSpacing="0"

Page 47: ASP.NET  網頁製作教本  –  從基本語法學起

Grid07.aspxGrid07.aspx Part II Part II AutoGenerateColumns="false" >

<Columns>

<asp:BoundColumn DataField="學號 " HeaderText="學號 " /> <asp:BoundColumn DataField="姓名 " HeaderText="姓名 " /> <asp:BoundColumn DataField="國文 " HeaderText="國語 " ItemStyle-HorizontalAlign="right"/> <asp:BoundColumn DataField="英文 " HeaderText="英語 " ItemStyle-HorizontalAlign="right"/> <asp:BoundColumn DataField="數學 " HeaderText="數學 " ItemStyle-HorizontalAlign="right"/> </Columns>

</asp:DataGrid>

</Form>

<p>

<HR></Center></Body>

</Html>

Page 48: ASP.NET  網頁製作教本  –  從基本語法學起

Grid07.aspxGrid07.aspx Part III Part III<script Language="VB" runat="server">

 

Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", " 成績單 " )

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 49: ASP.NET  網頁製作教本  –  從基本語法學起

Grid07.aspxGrid07.aspx Part IV Part IV Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then

OpenDataBase_And_BindToDataGrid()

End If

End Sub

 

Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs)

MyGrid.CurrentPageIndex = e.NewPageIndex

OpenDataBase_And_BindToDataGrid()

End Sub

 

</script>

Page 50: ASP.NET  網頁製作教本  –  從基本語法學起

設定 設定 DataGrid DataGrid 欄位的連結欄位的連結

此一欄位含有連結之功能

Grid07.aspx Grid08.aspx

Page 51: ASP.NET  網頁製作教本  –  從基本語法學起

Grid08.aspxGrid08.aspx Part I Part I<%@ Import Namespace="System.Data" %><!-- #include File="Mdb.vb" --> <Html><Body BgColor="White"><Center><H3>Grid08.aspx -- 設定 DataGrid 欄位的連結 <HR></H3><Form runat="server"><asp:DataGrid runat="server" id="MyGrid" AllowPaging="True" PageSize="10" OnPageIndexChanged="ChangePage" PagerStyle-HorizontalAlign="Right" PagerStyle-NextPageText=“下一頁” PagerStyle-PrevPageText="上一頁 " HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" CellSpacing="0" AutoGenerateColumns="false" >

Page 52: ASP.NET  網頁製作教本  –  從基本語法學起

Grid08.aspxGrid08.aspx Part II Part II<Columns> <asp:HyperLinkColumn DataTextField="學號 " HeaderText="學號 " DataNavigateUrlField="學號 " DataNavigateUrlFormatString="students.aspx?id={0}" Target="_blank" /> <asp:BoundColumn DataField="姓名 " HeaderText="姓名 " /> <asp:BoundColumn DataField="國文 " HeaderText="國語 " ItemStyle-HorizontalAlign="right"/> <asp:BoundColumn DataField="英文 " HeaderText="英語 " ItemStyle-HorizontalAlign="right"/> <asp:BoundColumn DataField="數學 " HeaderText="數學 " ItemStyle-HorizontalAlign="right"/> </Columns></asp:DataGrid></Form><p><HR></Center></Body></Html>

Page 53: ASP.NET  網頁製作教本  –  從基本語法學起

Grid08.aspxGrid08.aspx Part III Part III<script Language="VB" runat="server">

 

Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", " 成績單 " )

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 54: ASP.NET  網頁製作教本  –  從基本語法學起

Grid08.aspxGrid08.aspx Part IV Part IV Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then

OpenDataBase_And_BindToDataGrid()

End If

End Sub

 

Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs)

MyGrid.CurrentPageIndex = e.NewPageIndex

OpenDataBase_And_BindToDataGrid()

End Sub

 

</script>

Page 55: ASP.NET  網頁製作教本  –  從基本語法學起

8-5 8-5 DataTable DataTable 與排序與排序

Page 56: ASP.NET  網頁製作教本  –  從基本語法學起

DataTable DataTable 與排序與排序 排序也是顯示表格資料時,經常見到的排序也是顯示表格資料時,經常見到的功能,例如下圖是根據「國文」欄位來功能,例如下圖是根據「國文」欄位來排序所顯示的表格:排序所顯示的表格:

Page 57: ASP.NET  網頁製作教本  –  從基本語法學起

Sort Sort 屬性與資料排序屬性與資料排序 (1)(1)

想要產生排序好的資料,十分簡單,只想要產生排序好的資料,十分簡單,只要將 要將 DataTable DataTable 的 的 DefaultView. Sort DefaultView. Sort 屬性設定成欄位名稱即可,例如:屬性設定成欄位名稱即可,例如:

DataTable.DefaultView.Sort = " 國文 " ' 根據國文欄位排序資料

Page 58: ASP.NET  網頁製作教本  –  從基本語法學起

Sort Sort 屬性與資料排序屬性與資料排序 (2)(2)

Grid05.aspx Sort01.aspx

新增排序功能

Page 59: ASP.NET  網頁製作教本  –  從基本語法學起

Sort01.aspxSort01.aspx Part I Part I<%@ Import Namespace="System.Data" %><!-- #include File="Mdb.vb" --> <Html><Body BgColor="White"><Center><H3>Sort01.aspx -- Sort 屬性與資料排序 <HR></H3><Form runat="server">選擇排序的欄位 :<br><asp:ListBox runat="server" id="SortField" Rows=1> <asp:ListItem Selected>學號 </asp:ListItem> <asp:ListItem>姓名 </asp:ListItem> <asp:ListItem>國文 </asp:ListItem> <asp:ListItem>英文 </asp:ListItem> <asp:ListItem>數學 </asp:ListItem></asp:ListBox><asp:Button runat="server" Text="排序 " OnClick="SortPage"/><p>

Page 60: ASP.NET  網頁製作教本  –  從基本語法學起

Sort01.aspxSort01.aspx Part II Part II<asp:DataGrid runat="server" id="MyGrid"

AllowPaging="True"

PageSize="10"

OnPageIndexChanged="ChangePage"

PagerStyle-HorizontalAlign="Right"

PagerStyle-NextPageText="下一頁 " PagerStyle-PrevPageText="上一頁 " HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0"

BorderColor="Black"

CellPadding="2"

CellSpacing="0" /><p>

</Form>

<HR></Center></Body>

</Html>

Page 61: ASP.NET  網頁製作教本  –  從基本語法學起

Sort01.aspxSort01.aspx Part III Part III<script Language="VB" runat="server">

 

Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " )

Table.DefaultView.Sort = SortField.SelectedItem.Text

 

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 62: ASP.NET  網頁製作教本  –  從基本語法學起

Sort01.aspxSort01.aspx Part IV Part IV Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then

OpenDataBase_And_BindToDataGrid()

End If

End Sub

 

Sub SortPage(sender As Object, e As EventArgs)

OpenDataBase_And_BindToDataGrid()

End Sub

 

Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs)

MyGrid.CurrentPageIndex = e.NewPageIndex

OpenDataBase_And_BindToDataGrid()

End Sub

</script>

Page 63: ASP.NET  網頁製作教本  –  從基本語法學起

遞增排序或遞減排序遞增排序或遞減排序 (1)(1)

Sort01.aspx Sort02.aspx

新增功能

Page 64: ASP.NET  網頁製作教本  –  從基本語法學起

遞增排序或遞減排序遞增排序或遞減排序 (2)(2)

想要達到遞減排序的目的,只需在設定 想要達到遞減排序的目的,只需在設定 Default.Sort Default.Sort 屬性時,在欄位名稱後面加屬性時,在欄位名稱後面加上 上 " " Desc" Desc" 即可,例如:即可,例如:

DataTable.DefaultView.Sort = " 國文 Desc" ' 國文欄位遞減排序

Page 65: ASP.NET  網頁製作教本  –  從基本語法學起

遞增排序或遞減排序遞增排序或遞減排序 (3)(3)

新增 新增 RadioButtonList RadioButtonList 控制元件,用以控制元件,用以選擇「遞增排序」或「遞減排序」:選擇「遞增排序」或「遞減排序」:

<asp:RadioButtonList runat="server" id="SortType" RepeatDirection="Horizontal" RepeatColumns="2"> <asp:ListItem Selected> 遞增排序 </asp:ListItem> <asp:ListItem> 遞減排序 </asp:ListItem></asp:RadioButtonList>

Page 66: ASP.NET  網頁製作教本  –  從基本語法學起

遞增排序或遞減排序遞增排序或遞減排序 (4)(4) 修改 修改 OpenDataBase_And_BindToDataGrid() OpenDataBase_And_BindToDataGrid() 副程式,使成為:副程式,使成為: Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " ) If SortType.SelectedItem.Text = "遞減排序 " Then Table.DefaultView.Sort = SortField.SelectedItem.Text & " Desc"

Else

Table.DefaultView.Sort = SortField.SelectedItem.Text

End If

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

Page 67: ASP.NET  網頁製作教本  –  從基本語法學起

按下 按下 DataGrid DataGrid 的抬頭以排序資的抬頭以排序資料料

按下此一連結,即根據此一欄位排序資料Sort03.aspx第一次按下遞增排序第二次按下遞減排序第三次按下遞增排序…

Page 68: ASP.NET  網頁製作教本  –  從基本語法學起

Sort03.aspxSort03.aspx Part I Part I<%@ Import Namespace="System.Data" %><!-- #include File="Mdb.vb" -->

 

<Html>

<Body BgColor="White"><Center>

<H3>Sort03.aspx -- 按下 DataGrid 的抬頭以排序資料 <HR></H3>

<Form runat="server">

<asp:DataGrid runat="server" id="MyGrid"

AllowPaging="True"

PageSize="10"

OnPageIndexChanged="ChangePage"

PagerStyle-HorizontalAlign="Right"

PagerStyle-NextPageText="下一頁 " PagerStyle-PrevPageText="上一頁 "

Page 69: ASP.NET  網頁製作教本  –  從基本語法學起

Sort03.aspxSort03.aspx Part II Part II AllowSorting="true"

OnSortCommand="DgSortPage"

HeaderStyle-BackColor="#AAAADD"

AlternatingItemStyle-BackColor="#FFFFC0"

BorderColor="Black"

CellPadding="2"

CellSpacing="0" /><p>

<asp:Label runat="server" id="SortField" Text="學號 " Visible="False" />

<asp:Label runat="server" id="SortType" Text="" Visible="False" />

</Form>

<HR></Center></Body>

</Html>

Page 70: ASP.NET  網頁製作教本  –  從基本語法學起

Sort03.aspxSort03.aspx Part III Part III<script Language="VB" runat="server">

 

Sub OpenDataBase_And_BindToDataGrid()

Dim Table As DataTable

Table = OpenMdbTable( "Sample.mdb", "成績單 " ) Table.DefaultView.Sort = SortField.Text & SortType.Text

MyGrid.DataSource = Table.DefaultView

MyGrid.DataBind()

End Sub

 

Sub Page_Load(sender As Object, e As EventArgs)

If Not IsPostBack Then

OpenDataBase_And_BindToDataGrid()

End If

End Sub

Page 71: ASP.NET  網頁製作教本  –  從基本語法學起

Sort03.aspxSort03.aspx Part IV Part IV Sub DgSortPage(sender As Object, e As DataGridSortCommandEventArgs) If SortField.Text = e.SortExpression Then If SortType.Text = "" Then SortType.Text = " Desc" Else SortType.Text = "" End If Else SortField.Text = e.SortExpression SortType.Text = "" End If OpenDataBase_And_BindToDataGrid() End Sub  Sub ChangePage(sender As Object, e As DataGridPageChangedEventArgs) MyGrid.CurrentPageIndex = e.NewPageIndex OpenDataBase_And_BindToDataGrid() End Sub</script>