C # Dataatable для просмотра списка - PullRequest
7 голосов
/ 04 мая 2010

Мне нравится иметь возможность просмотра данных в форме Windows

Мне удалось получить заголовки только с ListView, как получить данные там

DataTable data = new DataTable();

data = EnumServices();

//create headers
foreach (DataColumn column in data.Columns)
{
      listView_Services.Columns.Add(column.ColumnName);
}

Я просто хочу показатьтеперь данные там!

ура

Ответы [ 3 ]

14 голосов
/ 04 мая 2010
foreach (DataRow row in data.Rows)
{
    ListViewItem item = new ListViewItem(row[0].ToString());
    for (int i = 1; i < data.Columns.Count; i++)
    {
        item.SubItems.Add(row[i].ToString());
    }
    listView_Services.Items.Add(item);
}

Обновление: также, если вы вызываете свой метод более одного раза, вам необходимо либо очистить коллекцию столбцов перед добавлением столбцов, либо проверить, не были ли уже добавлены столбцы - в противном случае количество столбцов будет увеличиваться при каждом вызове метода.

1 голос
/ 23 июля 2015

Я искал решение этой проблемы, но потерпел неудачу. Я не смог найти ничего, что лучше всего ответило бы на эту проблему, поэтому я нашел собственное решение. Я так рад, что смог сделать это решение более коротким, легким и понятным, но в то же время наилучшим образом отвечающим тому, что ищет большинство из нас.

    public void ShowCurrentParked()
    {
        dt3 = new DataTable();

        dt3.Clear();    //clear to avoid overlapping data (new DataTable is not enough)

        lstViewShowCurrentParked.Items.Clear();  //clear items to accept new or updated data to avoid overlapping/duplicate data

        dt3 = pBAL.ShowCurrentParked();  //datasource (class)
        for (int j = 0; j < dt3.Rows.Count; j++)
        {
            lstViewShowCurrentParked.BeginUpdate();
            lstViewShowCurrentParked.Items.Add(new ListViewItem(new string[] {dt3.Rows[j][1].ToString(),dt3.Rows[j][2].ToString(),
        dt3.Rows[j][3].ToString()}));
        }

        lstViewShowCurrentParked.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
        lstViewShowCurrentParked.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

        lstViewShowCurrentParked.EndUpdate();

        dt3.Clear();   //clear again to avoid overlapping data (new DataTable is not enough) .. to make datatable really empty


        //BeginUpdate and EndUpdate will just lessen the flicker during listview update
    }

Эффективность: 1. быстро 2. избежать дублирования данных 3. меньше мерцания

0 голосов
/ 10 февраля 2014
   DataTable sample = new DataTable(); //Sample Data
            sample.Columns.Add("Subject", typeof(string));
            sample.Columns.Add("Location", typeof(string));
            sample.Columns.Add("StartTime", typeof(DateTime));
            sample.Columns.Add("EndTime", typeof(DateTime));
            sample.Columns.Add("StartDate", typeof(DateTime));
            sample.Columns.Add("EndDate", typeof(DateTime));
            sample.Columns.Add("AllDayEvent", typeof(bool));
            sample.Columns.Add("Body", typeof(string));
listViewContacts.Items.Clear();

foreach (DataRow dr in sample.Rows)
            {
                DataRow row = sample.NewRow();
                row["Subject"] = dr.Subject;
                row["Location"] = dr.Location;
                row["StartTime"] = dr.Start.TimeOfDay.ToString();
                row["EndTime"] = dr.End.TimeOfDay.ToString();
                row["StartDate"] = dr.Start.Date;
                row["EndDate"] = dr.End.Date;
                row["AllDayEvent"] = dr.AllDayEvent;
                row["Body"] = dr.Body;
                sample.Rows.Add(row);
            }
            sample.AcceptChanges();
            foreach (DataRow dr in sample.Rows)
                {
                    ListViewItem lvi = new ListViewItem(dr["Subject"].ToString());

                    lvi.SubItems.Add(dr["Location"].ToString());
                    lvi.SubItems.Add(dr["StartTime"].ToString());
                    lvi.SubItems.Add(dr["EndTime"].ToString());
                    lvi.SubItems.Add(dr["StartDate"].ToString());
                    lvi.SubItems.Add(dr["EndDate"].ToString());
                    lvi.SubItems.Add(dr["AllDayEvent"].ToString());
                    lvi.SubItems.Add(dr["Body"].ToString());



                    this.listViewContacts.Items.Add(lvi);
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...