ああ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ページ全体のコード:
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

   

:  

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)をページに書きました.ソフトウェア開発では、データにアクセスする部分をデータ層に書き、ページ呼び出しデータ層でデータを得るのが一般的で、論理がはっきりしていて、修正とメンテナンスが便利です.