• atwiki
  • lele @Wiki
  • .Net DataGrid DB検索結果にCheckBoxをプラスして表示

lele @Wiki

.Net DataGrid DB検索結果にCheckBoxをプラスして表示

最終更新:

匿名ユーザー

- view
メンバー限定 登録/ログイン
いろいろ方法はあると思うけど、今回やった方法をまとめます。

やること:
1.DB検索結果をDataGridに表示
2.ID列は非表示
3.一番左に行選択用のチェックボックスを表示

やったこと:
<DataSet(xsd)>
 1.DataSetクラスを追加し、検索結果内容+チェックボックスをxsdに登録。(テーブルエレメント名をeletblとする)
  チェックボックスは type="xs:boolean" とする
<Formデザイナ>
 2.FormにデザイナでDataSetを型指定されたデータセットで1を選んで追加(データセット名をdsとする)
 3.FormにデザイナでDataGridを追加し、プロパティ設定 DataSource=ds, DataMemeber=eletbl
<DataGridTableStyle コレクションエディタ>
 4.プロパティTableStylesの「...」ボタンクリック。「追加」→「OK」。再度プロパティTableStylesの「...」ボタンクリック
 5.追加したメンバを選択し、MappingNameにeletblを設定
 6.GridColumnStyleの「...」ボタンクリック
<DataGridColumnStyle コレクションエディタ>
 7.検索カラム数 DataGridTextBoxColumnを追加。それぞれMappingNameにカラム名を設定。
   チェックボックスはDataGridBoolColumnで追加。タイトル文字もここで入れる
 8.IDカラムのwidth=0
<DB検索>
 9.検索のSelect句にダミーのチェックボックス列を含める。
 10.結果のDataSetの中身をDataGridのDataSourceに列コピー

       'DataGridにコピー(DataGridのスタイルを変更しないようにするため)
       Dim srcdt As DataTable = resultDataSet.Tables(0)
       Dim ds As DataSet = CType(Me.DataGrid1.DataSource, DataSet)
       Dim dt As DataTable = ds.Tables(0)
       dt.Clear()
       Dim dr As DataRow
       For Each dr In srcdt.Rows
           dt.ImportRow(dr)
       Next

<チェック行の取得>
       Dim dt As DataTable = CType(Me.DataGrid1.DataSource, DataSet).Tables(0)
       Dim dr As DataRow
       For Each dr In dt.Rows
           If (dr("check列名")) Then
               rowsList.Add(dr)
           End If
       Next
記事メニュー
目安箱バナー