[英]C# - Change existing column in a datagridview to a combobox
我在运行时使用4列(使用DataTable)填充了DGV,并希望使第2列和第3列成为组合框。
数据返回值:ProjNum(1)= H-16-0001,StatusCode(2)= P,ActionCode(3)= C,以及ActionSeqnum(4)= 0001
对于状态码和操作码,我们有一个查询表:P =待定C =创建
对于每一行,我希望将第2列和第3列作为一个组合框,并将其自身设置为返回的值以及文本“ Pending / Create”。
DataGridView1.DataSource = ClassName.GetAppData(); //Returns a datatable.
如何获得DGV第2列和第3列显示为组合框?
我找到一个链接并尝试过: DataGridView设置列单元格组合框
并且还发现了CellFormatting事件,但我似乎无法使其正常工作。
我为查找表创建了函数,该函数返回了一个数据表,但是当尝试使用上述方法将其绑定时,我无法使其工作。
.NET控件和功能来自PowerBuilder,对我来说是新的。
谢谢您的帮助。
好的,经过大量研究和经验丰富的C#.NET开发人员的帮助,我发现了一些对我有用的东西,但很费时间。
在这种情况下,您需要事先创建控件,我的DS中返回了12列,这意味着有12个新控件。 下面仅以两个示例为例,一个DGV文本框和一个DGV组合框。
private void Form1_Load(object sender, EventArgs e)
{
dataGridView2.AutoGenerateColumns = false;
//
//Text Box column
DataGridViewTextBoxColumn UserIDColumn = new DataGridViewTextBoxColumn();
UserIDColumn.Name = "user_id";
UserIDColumn.DataPropertyName = "user_id";
UserIDColumn.HeaderText = "User ID";
UserIDColumn.HeaderCell.Style.Font = new Font(dataGridView2.Font, FontStyle.Bold);
UserIDColumn.ReadOnly = false;
dataGridView2.Columns.Add(UserIDColumn);
//Adding a combobox
DataGridViewComboBoxColumn ActionStatusCodeColumn = new DataGridViewComboBoxColumn();
ActionStatusCodeColumn.Name = "StatusCode";
ActionStatusCodeColumn.DataPropertyName = "StatusCode";
ActionStatusCodeColumn.ReadOnly = false;
ActionStatusCodeColumn.DataSource = GetStatusLkp();//This function returns a BindingSource which contains the noted members below StatusCode and StatusCodeDescrEng.
ActionStatusCodeColumn.ValueMember = "StatusCode";
ActionStatusCodeColumn.DisplayMember = "StatusCodeDescrEng";
dataGridView2.Columns.Add(ActionStatusCodeColumn);
//Attach the Data property name to the columns
dataGridView2.Columns[0].DataPropertyName = "user_id";
dataGridView2.Columns[1].DataPropertyName = "StatusCode";
//Next bind your DGV
dataGridView2.DataSource = GetActionsData(); //This function returns a BindingSource which contains the noted members user_id and StatusCode.
}
这很痛苦,但是有效。
如果有更简便的方法,请告诉我。
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.