0

我使用 EF6 创建了一个模型。我的模型是这样的:

public partial class Good
{
    public Good()
    {
        this.InnoviceDetails = new HashSet<InvoiceDetail>();
    }

    public int Id { get; set; }
    public string Serial { get; set; }
    public string HasTax { get; set; }
    public string InitialAmount { get; set; }
    public string Group { get; set; }

    public virtual ICollection<InvoiceDetail> InnoviceDetails { get; set; }
}

我的列之一是HasTax,其值为10,但在mygridview中我需要更改这些值 (0,1)。我的意思是如果值1显示,如果0显示。我想使用我的模型的方法来做这些get?有可能吗?

Get 方法检查数据库中的值并将正确的值返回到gridview或表示层?

最好的祝福

4

1 回答 1

0

如果你:

1)不想直接更改模型或创建视图。
2) 或添加仅用于绑定转换的任何其他属性。

然后你剩下两个我能想到的主要变体:

1)创建一个半包装器,公开您的原始模型和用于绑定转换的附加特殊属性:

public class ModelSemiWrapperBase<TModel> 
{
   public ModelSemiWrapperBase(TModel model)
   {
       this.Model = model;
   }
   public TModel Model
   {
       get;
       private set;
   }
}

public class GoodSemiWrapper : ModelSemiWrapperBase<Good>
{
    public String HasTax
    {
        get
        {
            return (this.Model.HasTax == 0) ? ("Yes") : ("No");
        }
        set {...}
    }
}

只是不要忘记 INotifyPropertyChanged 和更改通知。同样在这种情况下,您将不得不在 DataGridView 中手动添加列。

2)处理DataGridView中的事件:

类似How do I use a ValueConverter with Databinding in Winforms 之类的东西,只是与 dataGridView 一起使用CellValueChangedCellValidatingDataBindingComplete或其他类似事件
我什至不确定您应该真正使用哪些事件。而且我不会使用这种方式。它太容易出错了,而且它将你的 dataGridView 与验证和转换逻辑紧密捆绑在一起。

于 2014-06-25T12:21:53.980 回答