SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
東南アジアをバックパッカーしながら転職活動をした記録
東南アジアをバックパッカーしながら転職活動をした記録
7年目で初の転職活動 2カ月で内定獲得した記録
7年目で初の転職活動 2カ月で内定獲得した記録
おすすめのプログラミングスクール めざせ就職・年収アップ!
おすすめのプログラミングスクール めざせ就職・年収アップ!
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
ブログ開始3年が経った月収が1万超えてた!
ブログ開始3年が経った月収が1万超えてた!
プログラミング独学・スクール・就職(目次)
プログラミング独学・スクール・就職(目次)
previous arrowprevious arrow
next arrownext arrow
 
Shadow
C#/VB.net

C# ListViewにDatatableをセットする

保守しているシステムにデータグリッドビューではなくリストビューが使われていることがあります。

ただ、SQLで取得したDatatableをセットする方法がデータグリッドビューとは全く異なります

Datatableをデータグリッドビューにセットする方法は意外と簡単ですが、

それに慣れていると少し面食らってしまうので、

データグリッドビューと比較しつつ備忘録として残しておこうと思います。

※因みにDatatableをデータグリッドビューにセットする方法これだけです。

dataGridView.DataSource = Datatable;

ListViewにDatatableをセットするソース

C#のサンプルです。
public void setListViewItems(ListView targetLstv, DataSet dsDataSource)
{
    //データのソースとなるDataSet
    DataRow drDataSource = new DataTable().NewRow();
    drDataSource = dsDataSource.Tables[0].NewRow();

    //ListViewItemをインスタンス化
    ListViewItem lstvwItems = new ListViewItem();

    //テーブルにデータがある場合、リストビューにデータをセット
    if (dsDataSource.Tables[0].Rows.Count > 0)
    {
        //データテーブルのレコード分ループ
        for (int i = 0; i; dsDataSource.Tables[0].Rows.Count - 1; i++)
        {
            //データソースの一行を格納
            drDataSource = dsDataSource.Tables[0].Rows[i];

            //データテーブルの列数分ループ(列ごとに縦にデータをセットする)
            for (int j = 0; j; dsDataSource.Tables[0].Columns.Count; j++)
            {
                //メインアイテムを設定(リストビュー上の1レコード目)
                if (j == 0)
                {
                    lstvwItems = targetLstv.Items.Add(drDataSource[j].ToString());
                }
                //サブアイテム設定(リストビュー上の2レコード目)
                else
                {
                    lstvwItems.SubItems.Add(drDataSource[j].ToString());
                }
            }
        }
    }
}

 

VBは以下のようにセットできます。

If dsResult.Tables(0).Rows.Count > 0 Then
  For i As Integer = 0 To dsResult.Tables(0).Rows.Count - 1
    For j As Integer = 0 To Me.Columns.Count - 1
      If j = 0 Then
        'アイテムを追加
        Me.Items.Add(dsResult.Tables(0).Rows(i).Item(0).ToString, i)
      Else
        'サブアイテムを追加
        Me.Items(i).SubItems.Add(dsResult.Tables(0).Rows(i).Item(j).ToString)
      End If
    Next
  Next
End If

リストビューの補足説明

リストビューとデータグリッドビューとの違いは、ItemsSubItemsがあるところですね。

1レコード目はItemsに対して値をセットし、

2レコード名以降はSubItemsに値をセットしていく処理になります。

データグリッドビューのようにDataSourceをセットして終わりではありません。

データグリッドビュー(DatagridView)とリストビュー(ListView)の違いは?

 

そもそもの話なのですが、

「データグリッドビューとリストビューを使い分ける必要があるの?」

と思われる方も多いと多いかと思います。

機能的な違いは、処理の軽さにあります。

一般的にはDataGridよりもListViewの方が軽量

とされていて、メモリの消費量がListViewの方が軽いようです。

確かに私の保守していたアプリケーションでも表示するレコード数が

業務によっては数千件になることがあり得るのでリストビューが使われていることにも納得です。

C#アプリ開発 メールお知らせアプリ 開発案件の経験は2案件ほどで、ほとんど経験ありません。 そんな私が独学でプログラミングの勉強をしてきました。 そこで...
おすすめのプログラミングスクール めざせ就職・年収アップ! プログラミングを独学でされている人は意外と多いです。 ただ、プログラミングの独学は簡単にはいきません。 自分だけの力...
プログラミングの独学とはエラーとの闘い プログラミングを勉強し始めた初心者の方はつまづくことが多いと思います。 私も最初はエラーが出るたびにいちいちビビッて、意味...
ABOUT ME
LooseCarrot
LooseCarrot
ブログ運営をしているLooseCarrotです。 興味のあることにトライして発信していきます! プロフィール

関連している記事