2015-10-16 137 views
1

我正在使用ObjectListView來顯示有關虛擬機的信息,並且每個虛擬機都有一組不同的驅動器連接到它。在收集數據期間,我獲取所有信息並將其存儲在具有我關心的屬性(大小,序列,用法等)的Disk_Drive對象中,現在我想要動態創建列,然後使用AddObjects綁定數據。我將如何做到這一點?創建動態列和數據綁定

我不確定在這種情況下應該是什麼方面的getter,因爲它不會是唯一的,我該如何處理?

public void GenerateColumns(Model.HyperVTools.VMInfo vmObject) 
     { 
      objectListView2.Columns.Clear(); 
      objectListView2.Items.Clear(); 
      List<OLVColumn> columnsList = new List<OLVColumn>(); 

      OLVColumn vmhostnameColumn = new OLVColumn("Hostname", "Host"); 

      //vhd columns 
      foreach (var disk in vmObject.DisksList) 
      { 
       string text = string.Format("{0};{1}GB;{2}GB;", disk.Path, disk.SizeReadable, 
         disk.MaxVHDSizeReadable); 
       disk.FormattedVHDInfo = text; 

       OLVColumn diskColumn = new OLVColumn("Attached VHD", "FormattedVHDInfo"); 
       columnsList.Add(diskColumn); 
      } 

      columnsList.Add(vmhostnameColumn); 

      objectListView2.Columns.AddRange(columnsList.Cast<System.Windows.Forms.ColumnHeader>().ToArray()); 

      objectListView2.AddObject(vmObject); 
     } 

回答

0

試試這個:

 DataTable dtInput = new DataTable(); 
     dtInput = dsAnalystPage.Tables[0]; 

     foreach (DataColumn cl in dtInput.Columns) 
     { 

      BrightIdeasSoftware.OLVColumn aNewColumn = new BrightIdeasSoftware.OLVColumn(); 
      aNewColumn.Name = cl.ColumnName; 
      aNewColumn.Text = cl.ColumnName; 
      if (aNewColumn.Text == "ASF_Code" || aNewColumn.Text == "ASD_SheetCode" || aNewColumn.Text == "ASD_SheetName") 
      { 
       aNewColumn.Width = 0; 
       aNewColumn.IsVisible = false; 
      } 
      OLV.AllColumns.Add(aNewColumn); 
      OLV.RebuildColumns(); 

     } 
0

嘗試重置控制。

OLV.Reset();