如果你的DataTable
有一个枚举类型的列。
您将DataGridView
绑定到此DataTable
(myDgv.DataSource = myDataTable
)..
如何让DataGridView
在这个列的每个单元格中显示一个组合框(或者它是下拉列表?你唯一能做的就是选择)?组合框应该选择当前值,并且可以选择其他可能的枚举值。
目前,这些单元格显示为纯旧的可编辑文本单元格,其中包含枚举值的字符串表示。
答案 0 :(得分:4)
我建议您阅读Forcing the DataGridView to do my bidding - a tale of ComboBox hackery:
起初我对DataGridView示例(概述)持乐观态度(下载DataGridView示例),但我没有看到任何我想做的事情:获取枚举值并使用组合框在网格中表示它。所以,我就是这样做的。
另外,您应该查看How to: Bind Objects to Windows Forms DataGridView Controls:
以下代码示例演示如何将对象集合绑定到DataGridView控件,以便每个对象显示为单独的行。此示例还说明了如何在DataGridViewComboBoxColumn中显示具有枚举类型的属性,以便组合框下拉列表包含枚举值。
答案 1 :(得分:2)
好吧,我不知道我要说的是否适合这里,但我最近有类似的要求:在DataGridView中显示绑定到DataSet的链接,这是
protected void grvResultado_RowDataBound(object sender, GridViewRowEventArgs e) {
if (grvResultado.HeaderRow == null || grvResultado.HeaderRow.Cells.Count == 0) return;
bool hasLink = false;
int ind = 0;
foreach (TableCell c in grvResultado.HeaderRow.Cells) {
if (c.Text == "link") {
hasLink = true;
break;
}
ind++;
}
if (!hasLink) return;
if (e.Row.RowType == DataControlRowType.DataRow) {
TableCell c = e.Row.Cells[ind];
var lnk = new HyperLink();
lnk.Text = "Ver";
lnk.NavigateUrl = c.Text;
c.Controls.Clear();
c.Controls.Add(lnk);
}
}
你可以像我一样习惯你需要的东西