> Do While reader.Read() > ListView1.Items.Add(No, 1) > ・・・・ > Loop > と記述しているのですが、データが何も表示されません。 > 申し訳ありません、お願い致します。
例を記述しますね 'ヘッダ設定 with ListView1 'カラムの追加 .Columns.Clear() '一応、クリアしておく .Columns.Add("会社コード", 200, HorizontalAlignment.Left) .Columns.Add("会社名", 400, HorizontalAlignment.Left) .Columns.Add("住所", COL_WIDTH6, HorizontalAlignment.Left) end with
'データ取得 (この部分は省略します)
'データ貼り付け With ListView1 .BeginUpdate() 'ちらつきを抑えるために、BeginUpdate()を呼ぶ。 .Items.Clear() 'ListViewItems をクリアする。 For i As Integer = 0 To <データ数 - 1> 'リストに格納 Dim items As New ListViewItem(<会社コードのデータ>) items.SubItems.Add(<会社名のデータ>) items.SubItems.Add(<住所のデータ>) 'ビューに描画 .Items.AddRange(New ListViewItem() {items}) Next .EndUpdate() 'EndUpdate() で表示を再開する。 End with こんな感じです。ソース内<>はobjectです。
SQL = "select * 〜" cmd.CommandText = SQL Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReader Do While reader.Read() Dim XXX As String = reader("〇〇コード") '↑数字項目だと、Objectではエラーになるんですね・・・ Dim YYY As Object = reader("カナ氏名") '↑Stringでも別にOKでしたが、Objectの方がいいのでしょうか?
With ListView1 .BeginUpdate() '.Items.Clear() 'For m As Integer = 0 To ???
Dim items As New ListViewItem(XXX) items.SubItems.Add(YYY) .Items.AddRange(New ListViewItem() {items}) 'Next .EndUpdate() End With Loop
> Dim XXX As String = reader("〇〇コード") > '↑数字項目だと、Objectではエラーになるんですね・・・ > Dim YYY As Object = reader("カナ氏名") > '↑Stringでも別にOKでしたが、Objectの方がいいのでしょうか? 私はDataReader用のクラスを作ってカプセル化しています。私のサイトにADO.NET操作がありますので、 参考にしてみてはいかがでしょうか?
Public Class cCompany '会社マスター用のクラス Friend Structure Rec_Table 'データベース用構造体 Public Code As String '会社コード Public Name As String '会社名 Public Zip As String '郵便番号 以下略 Public upDay As String '更新日 End Structure Friend TableData() As Rec_Table 'テーブル情報格納用
Friend Sub New() Erase TableData End Sub
以下、データ取得用メソッド、データ削除用メソッド、データ追加用メソッドなどなど… End Class こんな感じのクラスを用意しておけば、データ参照や追加などに「TableData(<行番号 - 1>).Code」みたいにできます。
Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReaderの後、 Do whileの中で、Dim Simei As String = reader("氏名")とする時に、 NULLが入って来た場合の対応が?です。 Datagridには、.NullTextとかあるみたいですが、結局分かりませんでした・・・。 よろしくお願い致します。
> NULLの件は、これでうまくいったみたいです。 > > Dim Simei As Object = reader("氏名") > If IsDBNull(reader("氏名")) = True Then > Simei = "" > End If > > もし、こっちが普通というのがありましたら、ご教授お願い致します。
分類:[.NET]
お世話になります。
SQLからデータを読み込み一覧を表示します。複数行選択したり、ある列は内容修正したり、行間や見出しなど見栄えも良くしたいです。
ListBoxは、そこそこ出来ることが分かってきたのですが、やはりListViewなどを使った方がよろしいのでしょうか?一応試してみたりしていますが、決断が出来ません。
安易に回答を求めて申し訳ないですが、よろしくお願い致します。