c# - DataGridView 将一个单元格内容更改为另一个单元格
问题描述
我有一个列表,products
我正在尝试将它们添加到 datagridview 中。每个产品都有一个属性,如 id、名称、品牌、价格、stockAmount、isPackaged 和产品类型属性。我想要的是使 IsPackaged 布尔值不可见,如果该布尔值为真,则将 productType 更改为“packaged”,如果它不是“未打包”,我不想在每次插入时输入 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
为“打包”!你怎么知道哪个是正确的?
您可能希望更改ProductType
类的Product
以保持一致的状态,例如……</p>
public string ProductType {
get {
return IsPackaged ? "Packaged" : "Unpackaged";
}
}
这样,“ProductType”永远不会“直接”设置,因为它取决于值IsPackaged
是什么。
该属性将显示在网格中;但是,用户将无法“更改”它。而且由于您使该IsPackaged
列不可见,因此用户将无法更改它。因此,我假设您的问题中缺少有关“如何”工作的信息。如果它纯粹是为了“显示”目的,那么它应该可以工作。如果您希望用户能够“更改”该IsPackaged
值,那么我猜它应该显示给用户。同样,这还不清楚。
推荐阅读
- vue.js - BootstrapVue b-form-group 标签绑定,标签未显示
- c# - IIS 服务器上的 Entity Framework Core 和 Windows 身份验证
- javascript - Node.js 和 express (MySQL):无法在浏览器中发布 / 和 404 代码
- c++ - 我们可以在没有模板的情况下使用 C++ 关键字“typename”吗?
- laravel - laravel Maatwebsite 验证总和多列
- java - 使用`merger()`的spring-kafka-test中的ClassCastException
- r - 有没有一种简单的方法可以将参数添加到插入符号模型中?
- sql - 比较两个数字字符串并找出唯一值
- ruby-on-rails - 当 prerender 设置为 true 时 React on Rails 错误异常
- javascript - 使用 javascript async/await 检查图像 url