Web版 DataGrid 特定レコード表示 [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

Web版:DataGrid テーブルレコード表示

DataAdapterオブジェクトのFillメソッド使って、検索したレコードをDataGridに表示するWeb版のサンプルです。

MDB版 サンプルプログラム

Web版

コントロール プロパティ 設定値
TxtMinCode Text ""
TxtMaxCode Text ""
BtnSelect Text グリッド表示
DgrSyain Caption Text ** 社員一覧 **
LblMessage BorderStyle Double

MessageBox.Showを使えないので、ラベルにエラーメッセージを表示します。

データグリッドのページングは、データグリッドオブジェクトのメンバーを使います。

ソースリストの枠内をクリックすると全選択できます。

Imports System.Data.OleDb

Public Class WebFormSelectRangeGrid
    Inherits System.Web.UI.Page
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected WithEvents Label2 As System.Web.UI.WebControls.Label
    Protected WithEvents TxtMinCode As System.Web.UI.WebControls.TextBox
    Protected WithEvents TxtMaxCode As System.Web.UI.WebControls.TextBox
    Protected WithEvents BtnSelect As System.Web.UI.WebControls.Button
    Protected WithEvents DgrSyain As System.Web.UI.WebControls.DataGrid
    Protected WithEvents LblMessage As System.Web.UI.WebControls.Label

#Region " Web フォーム デザイナで生成されたコード "
    ' 自動生成部分省略
#End Region

    '------------------------------------------------------------------
    ' ページロード処理
    '------------------------------------------------------------------
    Private Sub Page_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

        If IsPostBack Then
            ' 社員一覧データグリッド生成
            ' 注:PageIndexChangedイベントが発生した時に必要
            Me.GenerateDgrSyain()
        End If

    End Sub

    '------------------------------------------------------------------
    ' 社員テーブルからレコードを取得し、データグリッドに表示する
    '------------------------------------------------------------------
    Private Sub BtnSelect_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnSelect.Click

        ' 先頭頁を設定
        Me.DgrSyain.CurrentPageIndex = 0
        ' 社員一覧データグリッド生成
        Me.GenerateDgrSyain()

    End Sub

    '----------------------------------------------------------------------
    ' ページ番号クリック処理
    '----------------------------------------------------------------------
    Private Sub dgrSyain_PageIndexChanged(ByVal source As Object, _
    ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) _
    Handles dgrSyain.PageIndexChanged

        ' 選択された頁を設定
        Me.DgrSyain.CurrentPageIndex = e.NewPageIndex
        ' 社員一覧データグリッド再度生成
        Me.GenerateDgrSyain()

    End Sub

    '----------------------------------------------------------------------
    ' 社員一覧データグリッド生成
    '----------------------------------------------------------------------
    Private Sub GenerateDgrSyain()

        Dim con As New OleDbConnection()
        Dim cmd As New OleDbCommand()
        Dim da As New OleDbDataAdapter()
        Dim ds As New DataSet()

        Try
            ' ページング機能を有効にする
            Me.DgrSyain.AllowPaging = True
            ' データグリッドのページング関連プロパティの設定
            Me.DgrSyain.PageSize = 5
            Me.DgrSyain.PagerStyle.Mode = PagerMode.NumericPages
            Me.DgrSyain.PagerStyle.PageButtonCount = 5
            Me.DgrSyain.PagerStyle.Position = PagerPosition.Top
            Me.DgrSyain.Width = New Unit(320)
            Me.DgrSyain.Height = New Unit(18)

            ' データグリッド列クリア
            Me.DgrSyain.Columns.Clear()

            ' データグリッド列を生成
            Dim col(2) As BoundColumn

            ' 1列目:社員コード
            col(0) = New BoundColumn()
            col(0).HeaderText = "コード"
            col(0).DataField = "社員コード"
            col(0).ItemStyle.Width = New Unit(50)
            col(0).ItemStyle.HorizontalAlign = HorizontalAlign.Center
            Me.dgrSyain.Columns.AddAt(0, col(0))
            ' 2列目:社員氏名
            col(1) = New BoundColumn()
            col(1).HeaderText = "社員氏名"
            col(1).DataField = "社員氏名"
            col(1).ItemStyle.Width = New Unit(120)
            Me.dgrSyain.Columns.AddAt(1, col(1))
            ' 3列目:社員カナ名
            col(2) = New BoundColumn()
            col(2).HeaderText = "社員カナ名"
            col(2).DataField = "社員カナ"
            Me.DgrSyain.Columns.AddAt(2, col(2))

            ' DB接続文字列の設定
            ' プロジェクトフォルダにsample.mdbを置く
            con.ConnectionString = _
            "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
            Request.MapPath("") & "\bin\sample.mdb"

            ' コネクションの設定
            cmd.Connection = con

            ' SQL文の設定
            cmd.CommandText = "SELECT 社員コード, 社員氏名, 社員カナ "
            cmd.CommandText &= "FROM 社員テーブル "
            cmd.CommandText &= "WHERE 社員コード >=@minCode "
            cmd.CommandText &= "AND 社員コード <= @maxCode "
            cmd.CommandText &= "ORDER BY 社員コード"

            cmd.Parameters.Add("@minCode", OleDbType.Char, 5)
            cmd.Parameters("@minCode").Value = Me.TxtMinCode.Text
            cmd.Parameters.Add("@maxCode", OleDbType.Char, 5)
            cmd.Parameters("@maxCode").Value = Me.TxtMaxCode.Text

            ' データを取得する 
            da.SelectCommand = cmd
            ds.Clear()
            da.Fill(ds, "社員テーブル")

            ' データをバインドする
            Me.DgrSyain.DataSource = ds
            Me.DgrSyain.DataBind()

        Catch ex As Exception
            ' 例外が発生した時の処理
            Me.LblMessage.Text = ex.ToString

        End Try

    End Sub

End Class