DataGridView c#为每一行添加不同的值
本文关键字:添加 一行 DataGridView | 更新日期: 2023-09-27 17:50:48
我目前正试图将图层(我的类)对象列表中的值添加到datagridview。第一列只是一个带文本的普通单元格,但我希望第二列包括每行带值的组合框。我在演示器中有一个foreach循环,它循环遍历对象列表并调用AddRow方法,将name值和样式列表传递给它。这是我目前得到的。标题列表很好,但是组合框的样式不存在。如何使用创建的每行列表中的值填充组合框?由于公司政策,我不能发布截图,所以我会尽我所能回答任何含糊之处,谢谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Service
{
public class Layer
{
public string Name { get; set; }
public string Title { get; set; }
public string Abstract { get; set; }
public bool Selected { get; set; }
public List<string> CRS = new List<string>();
public List<string> Styles = new List<string>();
}
}
//
//Method Inside of presenter to provide datagridview with values
public void ProvideLayers()
{
if (_lview != null && _layers != null)
{
foreach (Layer lay in _layers)
{
if (lay.Styles.Count == 0)
{
_lview.AddRow(lay.Title,new List<string>());
continue;
}
else
{
_lview.AddRow(lay.Title,lay.Styles);
}
}
}
}
//
public void AddRow(string lName,List<string> lStyles)
{
dataGridView1.Rows.Add(lName,lStyles);
}
您可以设置组合框的数据源。
public void AddRow(string lName,List<string> lStyles)
{
var dgvRow = new DataGridViewRow();
dgvRow.Cells.Add(new DataGridViewTextBoxCell());
dgvRow.Cells.Add(new DataGridViewComboBoxCell());
dgvRow.Cells[0].Value = lName;
((DataGridViewComboBoxCell) dgvRow.Cells[1]).DataSource = lStyles;
dataGridView1.Rows.Add(dgvRow);
}
注意:如果你还没有设置你的列,这样做将强制你定义DataGridView的列,像这样:
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn());
dataGridView1.Columns.Add(new DataGridViewComboBoxColumn());
关于ComboBox的更多信息在这里。数据源