Есть ли простой способ заполнить ListView с помощью DataTable? - PullRequest
2 голосов
/ 04 января 2011

У DataGridView есть свойство «Источник данных», которое можно просто назначить для DataTable для его заполнения.Это означает, что нам не нужно беспокоиться об именах / количестве столбцов в DataTable.

Но я не нашел аналогичного способа заполнения ListView.Похоже, вам нужно знать, сколько столбцов имеет DataTable и имена каждого, чтобы сделать это, что делает его намного более сложным.как мы можем с DataGridView?

Ответы [ 2 ]

3 голосов
/ 04 января 2011
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);
                }
            }
2 голосов
/ 07 января 2011

ObjectListView - обертка с открытым исходным кодом вокруг .NET WinForms ListView - имеет подкласс DataListView, который именно это и делает.может быть DataView, DataTable, DataSet, DataViewManager или BindingSource), и он будет автоматически создавать столбцы и заполнять строки, чтобы сделать полностью функциональный вид списка.Вам просто нужна одна строка кода:

this.dataListView1.DataSource = ds1.Tables["Persons"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...