ListView / DataGridView向左移动列

时间:2015-05-19 18:00:40

标签: c# winforms listview datagridview

使用ListViewDataGridView我想将列标题移动到控件的左侧。基本上,将列的位置与行交换。我正在构建一个信息小程序,它将包含数十个具有单个值的列名。

在这个例子中,我刚刚创建了第一列为标题的行。Picture

2 个答案:

答案 0 :(得分:0)

如果您想透视数据,可以通过两种方式实现,具体取决于您要修改的内容。

如果数据位于数据库上,则可以根据需要显示为行数的列来使用动态构建的数据透视表查询。可以使用PIVOT或CASE语句在SQL Server中完成查询。

如果动态构建查询结果过于复杂,您可以按原样获取表,并使用列作为属性构建一个类,并创建一个集合,读取表的行并为每个列创建一个对象转动。

如果您决定这样做,请记住在类中实现INotifyPropertyChanged,如果要从代码更改表单中的数据并在网格中查看修改,请使用BindingList而不是List的类。 / p>

答案 1 :(得分:0)

这很难,因为datagridview根本没有为此提供任何帮助。但是当你想要显示少量具有大量属性的对象时,该模型可以非常方便。

Sabrina_cs上面的回答将处理在透视视图中显示数据的简单情况。但是,您将失去各种DataGridViewxxxColumn类提供的所有增强编辑功能。这可以解决,但你必须自己上课才能到达那里。

我过去已经建立了一个班级来以一种普遍的方式解决这个问题。我不能像工作那样分享代码,但我可以为你描述解决方案。

首先是一个基于xml的配置文件,用于定义将映射到属性的行集。在我们的例子中,这个配置文件包括顺序,属性名称,数据类型,查找引用,演示文稿(复选框,组合框等),标题文本,只读状态以及您认为可能需要的任何其他内容。

在表单初始化时,您将使用此配置文件生成网格中的行,并将定义绑定到代码行,以便稍后引用。

在加载数据时,您需要将值绑定到单元格,因为内置绑定不适合您。如果对数据之外的数据实现特殊控制,则需要在初始化行或绑定实际数据时手动将正确的控件绑定到单元格。我们用它来做布尔值 - >复选框和查找 - >组合框。

在编辑数据时,您将负责更新自己的基础数据对象,在加载数据时,您可能希望将这些对象与列关联。您可以使用反射根据配置文件中的信息更新属性。

我知道这不是很多细节,但希望这将提供足够的背景知识,你可以了解如何继续,或者是否值得努力。根据您尝试提供的体验有多丰富,这可能很容易就是1000多行代码,因此它非常重要。

对于我们尝试处理的数据集,我们的用户发现此演示文稿是一项非常有价值的改进。因人而异。祝好运。