ああNETのDataGridはソート可能、選択可能、ページング可能
5286 ワード
DataGridはAsp.NETの重要なコントロールの一つで、DataGridをページング可能とソート可能にすることが多く、選択機能を追加する必要がある場合もあります.これらはよく使われる方法ですが、実は簡単です.
設計構想:
便宜上、SQL Server 2000のNorthWindデータベースのOrdersテーブルに接続し、データベースからこのテーブルのデータビューを取得します.DataGridのSortCommandイベントを利用してソートします.1つのテンプレート列にCheckBoxコントロールを加えて選択を実現します.DataGridのプロパティジェネレータの「ページング」オプションを使用するか、HTMLインプリメンテーションページングを自分で変更できます.
HTML:
dgOrderという名前のDataGridを追加します.
テンプレート列が追加され、テンプレート列にCbというCheckBoxコントロールが配置されます.この列は選択のために使用されます
ソートする列ごとにソート式SortExpressionを追加します.
列のDataFormatStringを使用して列をフォーマットします.DataFormatString=「{0:d}」に日付フォーマットが表示されます.
PageSize="15"を設定すると、各ページに15行のデータが表示され、AllowPaging="True"がページングを許可されます.
HTMLページ全体のコード:
上のコードRegisterClientScriptBlock Java Scriptポップアップダイアログボックスを追加します.(実はVb ScriptのダイアログボックスはJava Scriptのダイアログボックスよりも多くの表示と制御方式がありますが、Netscapeのブラウザではサポートされていません.対応する項目に応じてプログラムでどのスクリプトを使うかを選択できます).
まとめ:
DataGridは私たちがよく使うWebコントロールで、時にはDataListと混合して使用することもでき、HTMLページを修正することで、良いページ効果を達成することができます.上はただの例ですが、プロセス全体をわかりやすくするために、データアクセス部分(SQL)をページに書きました.ソフトウェア開発では、データにアクセスする部分をデータ層に書き、ページ呼び出しデータ層でデータを得るのが一般的で、論理がはっきりしていて、修正とメンテナンスが便利です.
設計構想:
便宜上、SQL Server 2000のNorthWindデータベースのOrdersテーブルに接続し、データベースからこのテーブルのデータビューを取得します.DataGridのSortCommandイベントを利用してソートします.1つのテンプレート列にCheckBoxコントロールを加えて選択を実現します.DataGridのプロパティジェネレータの「ページング」オプションを使用するか、HTMLインプリメンテーションページングを自分で変更できます.
HTML:
dgOrderという名前のDataGridを追加します.
テンプレート列が追加され、テンプレート列にCbというCheckBoxコントロールが配置されます.この列は選択のために使用されます
ソートする列ごとにソート式SortExpressionを追加します.
列のDataFormatStringを使用して列をフォーマットします.DataFormatString=「{0:d}」に日付フォーマットが表示されます.
PageSize="15"を設定すると、各ページに15行のデータが表示され、AllowPaging="True"がページングを許可されます.
HTMLページ全体のコード:
:
Imports System.Data.SqlClient
' ,
Private Function GetDv(ByVal strSort As String) As DataView
'
Dim dv As DataView
Dim CN As New SqlConnection()
Try
'
CN.ConnectionString = "data source=pmserver;initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;"
CN.Open()
' NorthWind orders
Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)
Dim ds As New DataSet()
adp.Fill(ds)
'
dv = ds.Tables(0).DefaultView
Catch ex As Exception
#If DEBUG Then
Session("Error") = ex.ToString()
Response.Redirect("../error.aspx") '
#End If
Finally
'
CN.Close()
End Try
'
dv.Sort = strSort
Return dv
End Function
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
ViewState("strSort") = "orderid"
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End If
End Sub
'
Private Sub dgOrder_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand
dgOrder.CurrentPageIndex = 0
'
ViewState("strSort") = e.SortExpression.ToString()
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End Sub
'
Private Sub dgOrder_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged
'
dgOrder.CurrentPageIndex = e.NewPageIndex
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End Sub
:( )
, DataGridItem FindControl CheckBox , , :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim item As DataGridItem
Dim StrScript As String
StrScript = "alert('"
<br>' ,FindControl
<br>For Each item In Me.dgOrder.Items
<br>If CType(item.FindControl("cb"), System.Web.UI.WebControls.CheckBox).Checked Then
<br>Try
<br>StrScript += item.Cells(1).Text & Space(2)
<br>Catch ex As Exception
<br>End Try
<br>End If
<br>Next
<br>StrScript += " !') "
RegisterClientScriptBlock(" ", StrScript)
End Sub
上のコードRegisterClientScriptBlock Java Scriptポップアップダイアログボックスを追加します.(実はVb ScriptのダイアログボックスはJava Scriptのダイアログボックスよりも多くの表示と制御方式がありますが、Netscapeのブラウザではサポートされていません.対応する項目に応じてプログラムでどのスクリプトを使うかを選択できます).
まとめ:
DataGridは私たちがよく使うWebコントロールで、時にはDataListと混合して使用することもでき、HTMLページを修正することで、良いページ効果を達成することができます.上はただの例ですが、プロセス全体をわかりやすくするために、データアクセス部分(SQL)をページに書きました.ソフトウェア開発では、データにアクセスする部分をデータ層に書き、ページ呼び出しデータ層でデータを得るのが一般的で、論理がはっきりしていて、修正とメンテナンスが便利です.