datagridview中是否可以切换行列?我在DataTable中有10条数据记录,其中包含3个字段“Foo”、“Bar”和“Baz”。如果我将它连接到DataGridView,我会看到10行和3列,列标题显示字段的名称。我想知道反转行和列有多容易,所以对于相同的数据,我最终得到3行和10列,字段名称显示在行标题中。我可以手动做一些事情,比如覆盖OnPaint方法并将字段名称直接绘制到行标题单元格中,但我正在寻找更自动化的东西。再次,有人建议手动交换值,但这不起作用,除非我将所有值都设置为字符串。数据表中的3列-int、float和string类型的Foo、Bar和Baz未转置。尽管我管理了所有这些手动更改,但我的数据网格有CheckBox列、ComboBox列——不存在这样的行对应——没有CheckBox行或ComboBox行。我目前只需要告诉编译器“添加一个ComboBoxColumn”,我必须重写它以便单独生成每个单元格。理想情况下,我想要一个公开DataGridView的所有功能的TransposableDataGridView,并附加一个bool属性“Transposed”。这样我就可以完全保留我所有的代码——除了网格类型之外我不需要改变任何东西。如果不存在这种情况,我可能只好写了。(应该只需要一年!:)您可以创建新的数据表,添加适当数量的列,然后将值从一个表复制到另一个表,只需交换行和列。我认为您不能像设置列标题那样设置行标题(或者至少我不知道如何设置),因此您可以将字段名称放在单独的列中。DataTableoldTable=newDataTable();...数据表newTable=新数据表();newTable.Columns.Add("字段名");for(inti=0;iIuseDeveloperExpresVerticalGrid..likeyouWantagridthatrotates.它还允许每行使用不同的编辑器。链接到垂直网格产品页面您可以通过编程方式添加所需的数字来完成此操作列(例如,再增加10列)操作,然后以编程方式交换行、列与列、行。这段代码应该可以解决问题http://aspalliance.com/538_CodeSnip_Pivot_Tables_with_ADONET_and_Display_in_a_DataGrid_Paged_Horizo??ntally显示是asp.net,但您可以绑定生成的数据到datagridview并获得所需的结果在我的例子中,还需要为新表的所有列添加名称。我写了一个生成转置表的函数是这样的:以上是C#学习教程:Isitpossibletoswitchrowsandcolumnsinadatagridview?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注---staticpublicDataTableTranspose(DataTableinputTable,ListnewColumnNames){DataTableoutputTable=newDataTable();///你还应该验证newColumnsNames.Count是否匹配inputTable的行数}foreach(DataColumninputColumnininputTable.Columns){//对于每个旧列,我们在新表中生成一行DataRownewRow=outputTable.NewRow();//查找前一个标题行填写第一列newRow[0]=inputColumn.ColumnName.ToString();int计数器=1;foreach(inputTable.Rows中的DataRow行){newRow[counter]=row[inputColumn.ColumnName].ToString();计数器++;}outputTable.Rows.Add(newRow);}返回输出表;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
