我正在尝试制作一个程序,其中包含每行显示的数据网格,比萨饼的成分列表,比萨饼名称和比萨饼的价格。我可以让数据网格显示名称和价格,但我无法让它显示成分列表。数据网格的数据源是名为Pizza的类的绑定列表。
class Pizza
{
private List<Ingredients> ingredientList_;
private string pizzaName_;
private decimal retailPrice_;
public Pizza(List<Ingredients> ingredientList, string pizzaName, decimal retailPrice)
{
ingredientList_ = ingredientList;
pizzaName_ = pizzaName;
retailPrice_ = retailPrice;
}
它具有基本的get和set属性。 我也有一个成分类。
class Ingredients
{
private string name_;
private int servingSize_;
private int energyValue_;
private decimal purchasePrice_;
private bool isVegetarian_;
public Ingredients(string name, int servingSize, int energyValue, decimal purchasePrice, bool isVegetarian)
{
name_ = name;
servingSize_ = servingSize;
energyValue_ = energyValue;
purchasePrice_ = purchasePrice;
isVegetarian_ = isVegetarian;
}
具有基本的get和set属性。
在我的表单代码中,我有:
private BindingList<Pizza> pizzaList_;
pizzaList_ = new BindingList<Pizza>();
dataGridViewPizzaMenu.DataSource = pizzaList_;
现在我的问题是,当我点击它时,我正在尝试使用组合框列来显示披萨中的成分。但我似乎无法为配料创建一个绑定列,只有披萨名称和披萨价格。我错过了什么或者我想做的不可能吗?
答案 0 :(得分:0)
您可以创建一个comboBox,然后使用Datagridview1.Row.Add方法在Datagridview中插入一行来设置此事件。但在它之前,你应该有一个带有一些单元格的DatagridviewRow,这行的单元格是DataGrifViewComboBoxCell。
祝你好运......
答案 1 :(得分:0)
在表单加载事件
上ingredientList_ = context.Ingredients.OrderBy(p => p.ingredientName).ToList();
FillCombo();
//创建一个填充组合的方法
private void FillCombo()
{
IngredientBindingSource.DataSource = ingredientList_;
}
答案 2 :(得分:0)
为了将组合框放到第三个字段,你必须创建前两个作为datagridview项目:
DataGridViewRow RowSample = new DataGridViewRow();
DataGridViewComboBoxCell pizzaItem = new DataGridViewComboBoxCell();
pizzaItem.DataSource = pizzaList_;
pizzaItem.Value = pizzaList_[0];
DataGridViewCell pizzaName = new DataGridViewTextBoxCell();
pizzaName.Value = pizza.pizzaName; // creating the text cell
DataGridViewCell pizzaPrice = new DataGridViewTextBoxCell();
pizzaPrice.Value = pizza.pizzaPrice;; // creating the text cell
RowSample.Cells.Add(pizzaName);
RowSample.Cells.Add(pizzaPrice);
RowSample.Cells.Add(pizzaItem);
SampleGridView.Rows.Add(RowSample);
现在RowSample添加了3个字段的datagridview,第三个是组合框。
答案 3 :(得分:0)
你所做的一切看似正确。我认为问题是在Design或Runtime上设置DataGridView的方式。
如果您转到此答案,您可以看到需要采取的步骤: Add all elements of array to datagridview rows except one
绑定第一个组合框列的技巧是BindingSource。在设计时&gt;右键单击DataGridView&gt;选择编辑列&gt;选择第一列&gt;选择DataSource&gt;单击“添加项目数据源”&gt;选择对象&gt;然后勾选Ingredients
类并单击Finish。
记得将第一个ComboBox列DataMember
设置为ingredientList,您需要选择添加的IngredientsDataBindingSource控件(略低于Form Design的表面 - 在灰色区域中)
DataPropertyName
。 pizzaList_ = new BindingList<Pizza>();
//Insert code to populate the List of Pizza's and Ingredients
dataGridViewPizzaMenu.AutoGenerateColumns = false;
dataGridViewPizzaMenu.DataSource = pizzaList_;
ingredientsDataBindingSource.DataSource = pizzaList_.ingredientsList_;
ps我在上面提到的链接中有一个可下载的样本。