创建动态列和数据绑定

时间:2015-10-16 16:10:01

标签: c# listview objectlistview

我正在使用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);
        }

2 个答案:

答案 0 :(得分: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();

        }

答案 1 :(得分:0)

尝试重置控件。

OLV.Reset();