2011-08-01 4 views
0

comment peupler ComboBox et DataGridView en utilisant MVP (Model-View-Presenter). En fait, j'ai quelque chose comme ceci:Remplir Combobox et DataGridView en utilisant MVP

La vue classe de base:

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

La classe de base du présentateur:

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) { } 
} 

La vue spécifique:

public interface IAdministrarUsuariosView : IView 
{ 

    string NombreUsuarioABuscar {get; set;} 

    List<Perfil> ListaPerfiles {get; set;} 

    event EventHandler BuscarUsuarioPorNombre; 
    event EventHandler BuscarUsuarioPorPerfil; 
} 

Je ne savoir comment peupler le ComboBox et le Datagridview!

PD: Merci à Josh pour le code de la vue et des classes de base Présentateur (MVP Base Class)

Merci !!

Répondre

1

Vous devez créer une propriété que vous utiliserez pour configurer la source de données pour ComboBox et DropdownList.

juste pour vous donner un exemple (vous devez améliorer ce code, mais il montre une façon sur la façon dont vous pouvez le faire)

en vous Vue:

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

} 

puis dans la vue en béton (le WinForm qui imolements le 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(); 

     } 
    } 
} 

alors votre présentateur devrait ressembler le ci-dessous:

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

Salut Massimiliano, merci pour votre aide, je ne savais pas que c'était si simple, merci beaucoup pour votre aide !! – fcartu

+0

Salut Massimiliano, pourriez-vous expliquer pourquoi vous avez créé un présentateur en tant que générique plutôt qu'en simple classe de base? signifie que je quel est l'avantage de l'utiliser comme générique ou comment cela va fonctionner? – 0cool

+0

YourPresenter: Presenter Je suis un peu confus à propos de cette ligne que nous passons interface IAdministrarUsuariosView à la classe générique - public class Presenter où TView: classe, IView – 0cool