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; }
}

私の列の 1 つはHasTaxで、この値は10ですが、mygridview ではこれらの値 (0,1) を変更する必要があります。つまり、値が「はい」1表示され、「いいえ」と表示されている場合は、モデルの方法を使用してこれらを実行したいですか?それは可能ですか?0get

Get メソッドはデータベース内の値をチェックし、適切な値をgridviewプレゼンテーション層に返しますか?

よろしくお願いします

4

1 に答える 1

0

もし、あんたが:

1) モデルを直接変更したり、ビューを作成したりしたくない。
2) または、変換を伴うバインディングにのみ使用される追加のプロパティを追加します。

次に、私が考えることができる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 でイベントを処理します。

CellValueChangedCellValidatingDataBindingCompleteまたはその他の同様のイベントを使用して dataGridView を使用するだけで、Winforms の Databinding で ValueConverter を使用する方法のようなものです。 どのイベントを実際に使用する必要があるかさえわかりません。そして、私はそのような方法を使用していませんでした。エラーが発生しやすく、dataGridView と検証および変換ロジックが強力にバンドルされています。

于 2014-06-25T12:21:53.980 に答える