微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 订购时使用的最佳清单

在这里扩展我的问题 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属性来设置名称.
我看到你没有行,所以网格只有一行有很多列.

因此,假设您有一个名为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;
    }
}

如果我理解正确,这应该做你想要的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐