2011-01-04 13 views
2

DataGridViewにはプロパティ "DataSource"があり、これを単にDataTableに割り当ててデータを入力することができます。つまり、DataTableの列の名前/数について心配する必要はありません。DataTableでListViewを簡単に取り込む方法はありますか?

しかし、私は同じような方法ではなく、ListViewを設定していません。これを行うには、DataTableのカラム数とそれぞれの名前を知る必要があるので、はるかに難しくなります。

誰でも簡単にListViewを入力する方法を提案できますか?DataGridView

+1

DataTableを指定すると、Columnsプロパティの列とその名前が完全によくわかります。 ListViewをそのように配置するのはなぜ難しいと思いますか? –

+1

なぜ 'DataGridView'を使わないのですか? – leppie

答えて

3
private void LoadList() 
{ 
    // Get the table from the data set 
    DataTable dtable = _DataSet.Tables["Titles"]; 

    // Clear the ListView control 
    listView1.Items.Clear(); 

    // Display items in the ListView control 
    for (int i = 0; i < dtable.Rows.Count; i++) 
    { 
     DataRow drow = dtable.Rows[i]; 

     // Only row that have not been deleted 
     if (drow.RowState != DataRowState.Deleted) 
     { 
      // Define the list items 
      ListViewItem lvi = new ListViewItem(drow["title"].ToString()); 
      lvi.SubItems.Add (drow["title_id"].ToString()); 
      lvi.SubItems.Add (drow["price"].ToString()); 
      lvi.SubItems.Add (drow["pubdate"].ToString()); 

      // Add the list items to the ListView 
      listView1.Items.Add(lvi); 
     } 
    } 
} 

でもなどを仕分け検索 - 修正http://www.akadia.com/services/dotnet_listview_sort_dataset.html

-

// Clear the ListView control 
      listView1.Items.Clear(); 
      int ColCount = dtable.Columns.Count; 
      //Add columns 
      for (int k = 0; k < ColCount; k++) 
      { 
       listView1.Columns.Add(dtable.Columns[k].ColumnName); 
      } 
      // Display items in the ListView control 
      for (int i = 0; i < dtable.Rows.Count; i++) 
      { 
       DataRow drow = dtable.Rows[i]; 

       // Only row that have not been deleted 
       if (drow.RowState != DataRowState.Deleted) 
       { 
        // Define the list items 
        ListViewItem lvi = new ListViewItem(drow[0].ToString()); 
        for (int j = 1; j < ColCount; j++) 
        { 
         lvi.SubItems.Add(drow[j].ToString());       
        } 
        // Add the list items to the ListView 
        listView1.Items.Add(lvi); 
       } 
      } 
+0

あなたが掲示したこのコードは、列の名前に依存しています....そうではありませんか? – odiseh

+0

列名がわからないときに編集済みのものが追加されました。 –

2

ObjectListView - .NET WinFormsのListViewコントロールの周りのオープンソース・ラッパーは - 正確に行いDataListViewサブクラスを持っていますこの。

あなたはそれを(DataViewすることができ、 DataTableDataSetDataViewManager、または BindingSource)データソースを与えることができ、そしてそれは自動列を作成し、完全に機能するリストビューを作成するために、行に記入します。

this.dataListView1.DataSource = ds1.Tables["Persons"]; 
関連する問題