2011-08-01 3 views
0

実際に私はこのような何かを持っている:MVP(Model-View-Presenter)を使用してComboBoxとDataGridViewをどのように埋め込むかについて、MVPを使用してComboboxとDataGridViewを実装してください。

ビューの基本クラス:

public interface IView 
{ 
    event EventHandler Initialize; 
    event EventHandler Load; 
} 

プレゼンタ基底クラス:

public class Presenter<TView> where TView : class, IView 
{ 
    private TView view; 
    public TView View { get { return view; } private set { view = value; } } 

    public Presenter(TView view) 
    { 
     if (view == null) 
      throw new ArgumentNullException("view"); 

     View = view; 
     View.Initialize += OnViewInitialize; 
     View.Load += OnViewLoad; 
    } 

    protected virtual void OnViewInitialize(object sender, EventArgs e) { } 

    protected virtual void OnViewLoad(object sender, EventArgs e) { } 
} 

特定のビュー:

public interface IAdministrarUsuariosView : IView 
{ 

    string NombreUsuarioABuscar {get; set;} 

    List<Perfil> ListaPerfiles {get; set;} 

    event EventHandler BuscarUsuarioPorNombre; 
    event EventHandler BuscarUsuarioPorPerfil; 
} 

私にはありませんComboBoxとDatagridviewを実装する方法を知っている!

PD:表示およびプレゼンタ基底クラス(MVP Base Class

おかげでのコードのためのJoshのおかげ!

答えて

1

ComboBoxおよびDropdownListのデータソースを設定するために使用するプロパティを作成する必要があります。

あなただけで

ビュー(あなたはこのコードを改善する必要があるが、それはあなたがそれを行うことができますどのように道を示して)あなたの例を与えるために:

//this is just a template to simulate a datasource item 
public class TestItem 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
} 

public interface IAdministrarUsuariosView : IView 
{ 

    string NombreUsuarioABuscar { get; set; } 

    // List<Perfil> ListaPerfiles { get; set; } 

    event EventHandler BuscarUsuarioPorNombre; 
    event EventHandler BuscarUsuarioPorPerfil; 
    List<TestItem> SetComboBox { set; } 
    List<TestItem> SetGridView { set; } 

} 

その後、具体的な視野に( IAdministrarUsuariosView

public class YourView:IAdministrarUsuariosView 
{ 
    public string NombreUsuarioABuscar 
    { 
     get { throw new NotImplementedException(); } 
     set { throw new NotImplementedException(); } 
    } 

    public event EventHandler BuscarUsuarioPorNombre; 
    public event EventHandler BuscarUsuarioPorPerfil; 

    public List<TestItem> SetComboBox 
    { 
     set 
     { 
      ComboBox.DataSource = value; 
      //your need to specify value and text property 
      ComboBox.DataBind(); 
     } 
    } 

    public List<TestItem> SetGridView 
    { 
     set 
     { 
      GridView.DataSource = value; 
      //your need to specify value and text property 
      GridView.DataBind(); 

     } 
    } 
} 

をimolements Winフォームは、あなたのプレゼンターは、以下のようになります。

public class YourPresenter:Presenter<IAdministrarUsuariosView> 
{ 

    public YourPresenter(IAdministrarUsuariosView view) : base(view) 
    { 
    } 

    protected override void OnViewLoad(object sender, EventArgs e) 
    { 
     List<TestItem> listResult = GetListItem(); 
     this.View.SetComboBox = listResult; 
     this.View.SetGridView = listResult; 
    } 
} 
+0

こんにちはマッシミリアーノ、助けてくれてありがとう、私はそれがとてもシンプルだったことを知っていなかった、あなたの助けを大変感謝! – fcartu

+0

こんにちはマッシミリアーノ、単純な基本クラスではなく、ジェネリックとしてプレゼンターを作った理由を説明してください。私はそれをジェネリックとして、あるいはそれがどのように働くのかという利点を何を意味していますか? – 0cool

+0

YourPresenter:Presenter IAdministrarUsuariosViewインターフェイスを汎用クラスPresenter に渡しているこの行について少し混乱します。TView:class、IView – 0cool

関連する問題