C # datatable to listview

I like being able to view datatable in window form

I managed to get headers only with ListView, how to get data there

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

I just want to show the data there!

amuses

+6
c # listview datatable
source share
3 answers
 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); } 

Update: also, if you call your method more than once, you need to either clear the collection of columns before adding columns, or check if the columns are already added, otherwise the number of columns will increase each time you call your method.

+14
source share

I was looking for a solution for this, but I failed. I could not find anyone that would best answer this problem, so I made my decision. I am very glad that I was able to make this solution shorter, easier and more understandable, but the best answer is what most of us are looking for.

  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 } 

Efficiency: 1. Fast 2. Avoid data duplication 3. Less flicker

+1
source share
  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); } 
0
source share

All Articles