我在这里扩展我的问题
Dynamically Creating GridView并按照建议尝试不同的approch,但我再次陷入困境.
我有一个表来处理我的名字和键值的顺序.
KeyNames: ID Int primary key KeyName1 varchar(20) KeyOrder int KeyName2 varchar(20) KeyOrder int ... KeyNameN varchar(20) KeyOrder int
这些键表示要在gridview中显示的另一个表的名称和顺序.即:
DocumentTable: ID int primary key PDF_Folder varchar(30) Key1value varchar(100) Key2value varchar(100) .. KeyNvalue varchar(100)
所以在我的gridview中,用户可以决定Keys的列名和值(我可能想要调用Key1“description”order 1和Key2“Names Mentioned”和order 2.
如果订单< 0然后它将不会显示在gridview中. 我坚持我将如何创建一个gridview来显示KeyNValue的每一列,其中colmn名称为KeyNameN,KeyOrderN的顺序为..
解决方法
您将使用DataGridViewColumn的DisplayIndex属性来设置Order.
您将使用HeaderText属性来设置名称.
我看到你没有行,所以网格只有一行有很多列.
您将使用HeaderText属性来设置名称.
我看到你没有行,所以网格只有一行有很多列.
因此,假设您有一个名为MyGrid的网格,每个列都在一个名为MyEntityRecord的类中,您已将所有列放在列表中,并且您希望在用户单击按钮后显示数据,这里是一个要调用的示例代码来自Click事件.
void ShowCustomGrid(List<MyEntityRecord> aList) { MyGrid.Columns.Clear(); MyGrid.Rows.Clear(); for(int loop=0;loop<aList.Count;loop++) { MyGrid.Columns.Add(new DataGridViewColumn(new DataGridViewTextBoxCell())); MyGrid.Columns[loop].Text=aList[loop].KeyName; if(aList[loop].KeyOrder<0) MyGrid.Columns[loop].Visible=false; } //Now that all columns have been added,change the display index for(int loop=0;loop<aList.Count;loop++) { if(aList[loop].KeyOrder>=0) MyGrid.Columns[loop].DisplayIndex=aList[loop].KeyOrder; } //Finally,put the values MyGrid.Rows.Add(); for(int loop=0;loop<aList.Count;loop++) { if(aList[loop].KeyOrder>=0) MyGrid.Rows[0].Cells[loop].Value=aList[loop].KeyValue; } }
如果我理解正确,这应该做你想要的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。