C# 创建动态列和数据绑定
我使用ObjectListView显示有关虚拟机的信息,每个虚拟机都有一组不同的驱动器连接到它。在数据收集过程中,我获取所有信息并将其存储在一个磁盘驱动器对象中,该对象具有我关心的属性(大小、序列、使用情况等),现在我想动态创建列,然后使用AddObjects绑定数据。我该怎么做 我不确定在这个场景中aspect getter应该是什么,因为它不是唯一的,我如何处理这个问题C# 创建动态列和数据绑定,c#,listview,objectlistview,C#,Listview,Objectlistview,我使用ObjectListView显示有关虚拟机的信息,每个虚拟机都有一组不同的驱动器连接到它。在数据收集过程中,我获取所有信息并将其存储在一个磁盘驱动器对象中,该对象具有我关心的属性(大小、序列、使用情况等),现在我想动态创建列,然后使用AddObjects绑定数据。我该怎么做 我不确定在这个场景中aspect getter应该是什么,因为它不是唯一的,我如何处理这个问题 public void GenerateColumns(Model.HyperVTools.VMInfo vmObject
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);
}
public void GenerateColumns(Model.HyperVTools.VMInfo vmObject)
{
objectListView2.Columns.Clear();
objectListView2.Items.Clear();
列表列列表=新列表();
OLVColumn vmhostnameColumn=新的OLVColumn(“主机名”、“主机”);
//vhd列
foreach(vmObject.DisksList中的var磁盘)
{
string text=string.Format(“{0};{1}GB;{2}GB;”,disk.Path,disk.SizeReadable,
disk.MaxVHDSizeReadable);
disk.FormattedVHDInfo=文本;
OLVColumn diskColumn=新的OLVColumn(“附加的VHD”、“格式化的VHDINFO”);
columnsList.Add(diskColumn);
}
columnsList.Add(vmhostnameColumn);
objectListView2.Columns.AddRange(columnsList.Cast().ToArray());
objectListView2.AddObject(vmObject);
}
试试这个:
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();
}
试试这个:
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();
}
尝试重置控件
OLV.Reset();
尝试重置控件
OLV.Reset();