在DataGridView中显示bool和Enum列的ComboBox

时间:2016-11-05 00:51:25

标签: c# winforms datagridview combobox enums

我有一个DataTable,其中包含各种数据类型的列 - intstringboolEnum(如Severity in下面的例子):

hostTable = new DataTable();
hostTable.Columns.Add("Suspended", typeof(bool));
hostTable.Columns.Add("Succ Tests", typeof(int));
hostTable.Columns.Add("Unsucc Tests", typeof(int));
hostTable.Columns.Add("System Name", typeof(string));
hostTable.Columns.Add("System IP", typeof(string));
hostTable.Columns.Add("Criticality", typeof(Severity));
hostTable.Columns.Add("Alert Email To", typeof(string));
hostTable.Columns.Add("Alert Email Cc", typeof(string));
hostTable.Columns.Add("Likely Impact", typeof(string));
hostTable.Columns.Add("Likely Causes", typeof(string));
hostTable.Columns.Add("Escalation", typeof(string));

hostTable.Rows.Add((bool)hd.IsSuspended, (int)hd.SuccTests, (int)hd.UnSuccTests,
    hd.SystemName, hd.SystemIp, (Severity)hd.Criticality, hd.AlertEmailToAddress, 
    hd.AlertEmailCcAddress, hd.LikelyImpact, hd.LikelyCauses, hd.EscalationInstructions);

dgvHostTable.DataSource = hostTable;

当我将其绑定到DataGridView时,如何使用此设置显示列:

  • bool columns→带有true / false选项的ComboBox
  • 枚举列→带有枚举列表的ComboBox
  • 字符串列→与可编辑的文本字段一样

1 个答案:

答案 0 :(得分:2)

您应自行为这些列添加<? $date_today = date("d.m.y"); if ($date_today == "27.00.0000") {?> Burning! <? } ?> 列。您可以创建一个可重用的方法来为您完成。

在下面的代码中,我检查了DataGridViewComboBox控件的所有列,对于每一列,如果它绑定到DataGridView属性或bool属性,我使用了{{ 1}}代替:

Enum

示例

您只需使用以下代码测试解决方案:

DataGridViewComboBoxCOlumn

enter image description here