【发布时间】:2025-12-27 01:55:06
【问题描述】:
我有一个带有 DataSet 源表的 DataGridView (CurrentLine)。我添加了一个带有不同数据源的组合框列,效果很好。我尝试添加另一列,但 DataGridView 拒绝显示它! 我尝试通过 DataGridViewColumn 和 DataGridViewTextBoxColumn 添加一个常规列(因为我基本上需要一个只有数字的常规列)。 我尝试将可见性属性设置为 true。 似乎没有任何效果,我不知道为什么。
da1.Fill(Orders, Order);
da2.Fill(Orders, Lines);
da3.Fill(Orders, Products);
CurrentLine.DataSource = Orders.Tables[Lines];
CurrentLine.Columns["fkPrdctnum"].Visible = false;
CurrentLine.Columns["linenum"].Width = 60;
CurrentLine.Columns["linenum"].HeaderText = "Number";
CurrentLine.Columns["linenum"].ReadOnly = true;
CurrentLine.Columns["lineQuantity"].HeaderText = "Quantity";
CurrentLine.Columns["lineQuantity"].Width = 70;
CurrentLine.Columns["linePrdctPrice"].HeaderText = "Unit Price";
CurrentLine.Columns["linePrdctPrice"].Width = 100;
DataGridViewComboBoxColumn prod = new DataGridViewComboBoxColumn();
prod.DataSource = Orders.Tables[Products];
prod.DisplayMember = "prdctName";
prod.ValueMember = "prdctNum";
prod.HeaderText = "Product";
CurrentLine.Columns.Add(prod);
for (int i=0; i<CurrentLine.Rows.Count; i++)
{
int product = Convert.ToInt32(Orders.Tables[Lines].Rows[i][1]); //This loop sets the values of the combobox according to the order lines in the orderline table in the dataset.
CurrentLine.Rows[i].Cells[4].Value = product;
}
DataGridViewColumn LinePrice = new DataGridViewColumn();
LinePrice.HeaderText = "Line Price";
LinePrice.Width = 100;
LinePrice.ReadOnly = true;
CurrentLine.Columns.Add(LinePrice);
要明确一点:组合框工作正常,设置其值的循环也工作正常。问题似乎出在 DataGridViewColumn LinePrice 的某个地方。
知道发生了什么吗?为什么一种类型的列(组合框)可以正常工作,而另一种则不能?
附言我已经削减了关于另一个填充 Order 表的 DataGridView 的代码行,因为它工作正常并且据我所知与问题无关)。
更新:当我将框移到组合框列之前时,它突然出现...虽然不知道为什么,它不是我希望它在 DataGridView 中的位置。
【问题讨论】:
-
您是否将
CurrentLine.AutoGenerateColumns设置为false?数据网格是否有滚动条并且列不在可见区域中? lineprice 列是在事件还是线程中生成的? -
将
DataGridViewColumn更改为DataGridViewTextBoxColumn -
@Pikoh 正如我在帖子中所写,我已经尝试过了。它也不起作用。
-
@SebastianSchulz 这对所有人来说都是不。当前DataGridView列只占一半左右的空间,而且没有滚动条。
-
它会抛出任何错误还是根本不出现?
标签: c# datagridview datagridviewcolumn