有没有一种简单的方法可以通过 DataTable 填充 ListView?

odi*_*seh 2 .net datatable listview winforms

DataGridView一个属性“DataSource”,可以简单地分配给 aDataTable来填充它。这意味着我们不必担心DataTable.

但是,我还没有找到类似的填充ListView. 似乎您需要知道有多少列DataTable以及每列的名称才能执行此操作,这使得它变得更加困难。

谁能建议一种简单的方法来填充 aListView就像我们可以用 a 一样DataGridView

Rav*_*rma 5

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还可以在 - 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);
                }
            }
Run Code Online (Sandbox Code Playgroud)