2011-07-04 7 views
1

コントロールの別のメソッドを完全に同じコードに関連付ける必要があります。 私はこれを今のようにしています:OnItemInstered、同じコードのOnItemUpdated

protected void dgvProperty_ItemInserted(object sender, GridInsertedEventArgs e) 
{ 
    BindItems(); 
} 

protected void dgvProperty_ItemDeleted(object sender, GridDeletedEventArgs e) 
{ 
    Binditems(); 
} 

protected void dgvProperty_ItemUpdated(object sender, GridUpdatedEventArgs e) 
{ 
    BindItems(); 
} 

これは間違っています。繰り返しを避けるにはどうすればいいですか?

答えて

1

私はあなたが上記の表示されているコードには何も「間違っている」があるとは思わないが、DGVオブジェクトは、あなたがそれを持つことができ、あなたのコントロール下にクラスがある場合は、このロジックに

を統合することが可能ですアイテムが挿入、削除、または更新されるたびに発生する別のイベントを発生させます。その後、このイベントを聞くことができます。または、dgvオブジェクトをサブクラス化して上記の動作を追加することもできます。

編集:ここに例があります。私はあなたのサンプルのイベント引数について素早くGoogleを行いました.Tererik RadGridを使用していると推測していますので、私はその例をベースにしますが、プリンシパルは一般的です。

public class ExampleGrid : RadGrid 
{ 
     public ExampleGrid() : base() 
     { 
      base.ItemInserted += (o, e) => NotifySomethingChanged(); 
      base.ItemDeleted += (o,e) => NotifySomethingChanged(); 
      base.ItemUpdated += (o,e) => NotifySomethingChanged(); 
     } 

     public event EventHandler SomethingChanged; 

     private void NotifySomethingChanged() 
     { 
      var handler = this.SomethingChanged; 
      if (handler != null) 
        handler(this, EventArgs.Empty); 
     } 
    } 

これで、SomethingChangedイベントを聴くことができます。これは3つのイベントハンドラをコントロールに追加するよりもほんのわずかですが、このようなことを頻繁に行うのであれば、それは価値があります

+0

可能であれば、簡単な例を教えてください。 – user194076

+0

@ user194076例を表示するように編集されました – cordialgerm

1

残念なことに、各イベントの引数が異なるためです。 GridXXXEventArgsがすべて同じクラス(つまり、GridEventArgs)から継承されている場合は、それをもっとうまくいくことができますが、ここではそうは思わないでしょう。

各イベントから呼び出される単一のメソッドを使用して、正しいことを実行しています。

関連する問題