gpt4 book ai didi

c# - 带有 DataTableSource 的 DataGridView ComboBox 列

转载 作者:行者123 更新时间:2023-11-30 18:28:16 24 4
gpt4 key购买 nike

我已经尝试解决这个问题大约一天了,但没有成功。希望这里有人可以提供帮助。

我有一个绑定(bind)到我的 DataGridView 的 DataTable 对象。表的一列,下例中的 Col_4 需要保存一个来自枚举类型的值。在这种情况下,我使用了颜色。我需要表格的 Col_4 成为 ComboBox 元素的列,以便我选择所需的颜色。然后,颜色选择将存储在绑定(bind)到 DataGridView 的 DataTable 中。

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{

enum MyColors {Red, Green, Blue, Yellow, Orange, White};
List<MyColors> colors = Enum.GetValues(typeof(MyColors)).Cast<MyColors>().ToList();

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
DataTable table = new DataTable("theData");
table.Columns.Add("Col_1");
table.Columns.Add("Col_2");
table.Columns.Add("Col_3");
table.Columns.Add("Col_4");

DataGridViewComboBoxColumn comboCol = new DataGridViewComboBoxColumn();
comboCol.ValueType = typeof(MyColors);
comboCol.DataSource = colors;
comboCol.DataPropertyName = "Col_4";

DataRow row = table.NewRow();
row["Col_1"] = 1;
row["Col_2"] = 2;
row["Col_3"] = 3;
row["Col_4"] = 4;

table.Rows.Add(row);

dataGridView1.DataSource = table;
dataGridView1.Columns.Add(comboCol);
dataGridView1.AllowUserToAddRows = false;

Console.WriteLine(dataGridView1.Rows[0].State.ToString());
}

}
}

我有两个问题:

  1. 如何让 ComboBox 元素的列具有“Col_4”标题?
  2. 如何使选定的 ComboBox 值正确存储在 DataTable 中?

这可能很简单,但我是 C# 的新手,我真的很困惑。

最佳答案

对于你的第一个问题

comboCol.Header="Test";
comboCol.ValueMember="ColorId"; //that color id is the value of color class to be sorted in database

对于你的第二个问题,使用下面的代码:

BindingSource bs=new BindingSource();
bs.DataSource=table;
datagridview1.DataSource=bs;

当你想在数据库中保存数据时

int columnvalueColorId=Convert.ToInt32((bs.current as DataRowView).Row["Col_4"].ToString());//if colum

关于c# - 带有 DataTableSource 的 DataGridView ComboBox 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com