string[] C = new string[50];// For column Name
DataTable dt1;//Put your Table data in dt1
for (int r = 0; r < dt1.Columns.Count; r++)
{
C[r] = dt1.Columns[r].ToString();
}
for (int r = 0; r < dt1.Columns.Count; r++)
{
dataGridView2.Rows.Add(C[r], dt1.Rows[0][C[r]].ToString());
}
6条答案
按热度按时间gev0vcfq1#
通常,我不会在DataGridView中这样做,它实际上是为了显示多条记录,而您一次只想显示一条记录。我可以建议两种替代方法来处理这个问题:
如果您知道要提前显示的字段,则通常的方法是在设计时布局一组单独的值显示标签和其他简单控件。这样做有以下优点:
如果您不知道在设计时要显示哪些字段,或者不想麻烦地安排它们的布局,请使用PropertyGrid控件而不是DataGridView。我实际上从未尝试过将DataTable用作数据源,但看起来在C#/winforms: how to best bind a propertygrid and a System.Data.DataRow中有一个很好的解决方案
14ifxucb2#
我希望你能尝试在SQL中使用PIVOT来使你的数据集看起来像上面的结果。相反,你可以在你的数据集中旋转(切换行和列)并将该数据集绑定到你的网格。请参见下面的链接,它会帮助你。
http://codemaverick.blogspot.com/2008/02/transpose-datagrid-or-gridview-by.html
k75qkfdt3#
这就是我要做的
1.构建主DataGridView并进行数据绑定后,迭代网格上的Columns集合,并将可见列的名称存储在List中(此操作仅执行一次)
1.创建另一个基于DataGridView的简单控件(仅执行一次)
1.创建一个SelectionChanged事件处理程序,获取选中行的Index,如果使用单行选择模式,可以通过dg.SelectedRows[0].Index获取。
1.创建一个包含两列(一个字段和另一个值)的DataTable。在步骤1中迭代生成的必需列列表,在字段中添加列名,并使用步骤3中获取的索引从绑定到主DataGridView的主数据表中检索DataRow来填充值。
1.清除步骤2中创建的控件,将其绑定到步骤4中创建的数据表并显示。
9rbhqvlz4#
Visual Basic Power Packs
有一个DataRepeater
控件,可以在这些情况下使用。您可以按照自己的方式设计每一行,并为每一行放置您想要放置的任何控件。以下视频演示了如何使用此DataRepeater控件:
http://channel9.msdn.com/Blogs/funkyonex/The-New-DataRepeater-Control-in-the-Latest-Power-Packs-Release
您可以下载visual basic电源包:
http://www.microsoft.com/en-in/download/details.aspx?id=25169
另外,如果您使用的是Visual Studio 2013,请阅读以下内容:
http://ntcoder.com/bab/2013/12/20/visualbasic-powerpack-missing-from-visual-studio-2013/
fquxozlt5#
yc0p9oo06#
然后在代码后面,您只需像绑定另一个容器一样绑定它。