C# 创建动态列和数据绑定

C# 创建动态列和数据绑定,c#,listview,objectlistview,C#,Listview,Objectlistview,我使用ObjectListView显示有关虚拟机的信息,每个虚拟机都有一组不同的驱动器连接到它。在数据收集过程中,我获取所有信息并将其存储在一个磁盘驱动器对象中,该对象具有我关心的属性(大小、序列、使用情况等),现在我想动态创建列,然后使用AddObjects绑定数据。我该怎么做 我不确定在这个场景中aspect getter应该是什么,因为它不是唯一的,我如何处理这个问题 public void GenerateColumns(Model.HyperVTools.VMInfo vmObject

我使用ObjectListView显示有关虚拟机的信息,每个虚拟机都有一组不同的驱动器连接到它。在数据收集过程中,我获取所有信息并将其存储在一个磁盘驱动器对象中,该对象具有我关心的属性(大小、序列、使用情况等),现在我想动态创建列,然后使用AddObjects绑定数据。我该怎么做

我不确定在这个场景中aspect 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);
        }
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();