2010-05-04 11 views
6

मैं खिड़कियों के रूप में datatable देखने में सक्षम होना चाहतेसी # datatable ListView को

मैं केवल ListView वहाँ

DataTable data = new DataTable(); 

data = EnumServices(); 

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

में डेटा प्राप्त करने के लिए मैं सिर्फ दिखाना चाहते हैं के साथ हेडर पाने में कामयाब रहे अब वहां डेटा!

चियर्स

उत्तर

14
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); 
} 

अद्यतन: भी, आप अपने विधि एक बार से अधिक कॉल कर रहे हैं, तो आप या तो कॉलम जोड़ने से पहले कॉलम संग्रह साफ़ करते हैं या जांच करने की आवश्यकता है, तो स्तंभ को देखने के लिए पहले ही जोड़ा जा चुका है - अन्यथा, जब भी आप अपनी विधि को कॉल करते हैं, कॉलम की संख्या बढ़ती रहेगी।

+0

अच्छा है, लेकिन मेरी पहली पंक्ति रिक्त है !!! –

+0

मुझे लगता है कि इसका मतलब है कि आपके डेटाबेस में डेटा की रिक्त पंक्ति है? – MusiGenesis

+0

या क्या आपका मतलब है कि पहला * कॉलम * खाली है? – MusiGenesis

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

मैं इस पर समाधान ढूंढ रहा हूं लेकिन मैं असफल रहा। मैं ऐसा कोई भी नहीं ढूंढ पाया जो इस समस्या का सबसे अच्छा जवाब दे, इसलिए मैंने अपना स्वयं का समाधान बनाया। मुझे बहुत खुशी है कि मैं इस समाधान को कम, आसान और अधिक समझने योग्य बनाने में सक्षम था, लेकिन हममें से अधिकांश जो हम खोज रहे हैं, उसका सबसे अच्छा जवाब देंगे।

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. कम झिलमिलाहट