c# - DataGridView 更改符合另一个单元格条件的单元格内容

标签 c# datagridview datagridviewcolumn

我有一个 products 列表,我正在尝试将它们添加到数据 GridView 中。每个产品都有一个属性,如 id、name、brand、price、stockAmount、isPackaged 和产品类型属性。我想要的是使 IsPackaged bool 值不可见,如果该 bool 值是 true,则将 productType 更改为“packaged”,如果它不是“unpackaged”,我不想在每次插入时都键入 packageType。但是,我收到类似“当前上下文中不存在名称 IsPackaged”的错误

为了隐藏 isPackage 列,我找到了一个工作正常的代码: dataGridView1.Columns["IsPackaged"].Visible = false;

list.Add(new Product()
            {
                ID = 4,
                Name = "Ice Cream",
                Brand = "Magnum",
                Price = 12,
                IsPackaged = true,
                ProductType = IsPackaged ? "Packaged" : "Unpackaged" , //Here is the error
                StockAmount = 50,
            });

最佳答案

我可能弄错了,但看起来 ProductType 应该是一个“不可设置”的属性,因为它基于 IsPackaged 属性。换句话说,无论如何,IsPacked IS 将确定 ProductType 的值是什么。

在当前状态下,这两个变量显得多余,可以设置为不一致的状态。例如……用户可以将 IsPackaged 设置为 false,然后转身将 ProductType 设置为“Packaged”!你怎么知道哪一个是正确的?

您可能想要更改 Product 类的 ProductType 以保持一致的状态,例如......

public string ProductType {
  get {
    return IsPackaged ? "Packaged" : "Unpackaged";
  }
}

这样“ProductType”永远不会“直接”设置,因为它取决于 IsPackaged 的值。

该属性将显示在网格中;但是,用户将无法“更改”它。由于您使 IsPackaged 列不可见,因此用户将无法更改它。因此,我假设您的问题中缺少有关“如何”工作的信息。如果它纯粹是为了“显示”目的,那么它应该可以工作。如果您希望用户能够“更改”IsPackaged 值,那么我猜它应该显示给用户。同样,这还不清楚。

关于c# - DataGridView 更改符合另一个单元格条件的单元格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65530585/

相关文章:

c# - 将 TypeConverter 直接绑定(bind)到枚举

c# - 从 C# 2.1 驱动程序正确关闭 MongoDB 数据库连接?

C# 导出带分号的 CSV 文件

C# WinForm 上下拖动点击

c# - 如何在动态添加现在数据之前清除 dataGridView 行以前的数据....?

c# - DataGridView:确定 SQL 键值或关系?

c# - 如何将 gridview 中的列的总和发送到 gridview 外部的文本框?

c# - 即使在将 DataGridView 标题设置为 MiddleCenter 后,标题也略微向左对齐

c# - 同一列中包含多个信息的 DataGridview

C# 事件处理程序