Заполните Combobox и DataGridView, используя MVP - PullRequest
0 голосов
/ 01 августа 2011

как заполнять ComboBox и DataGridView, используя MVP (Model-View-Presenter).На самом деле у меня есть что-то вроде этого:

Базовый класс View:

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: Спасибо Джошу за код базовых классов View и Presenter ( Базовый класс MVP )

Спасибо !!

1 Ответ

2 голосов
/ 01 августа 2011

вам нужно создать свойство, которое вы будете использовать для настройки источника данных для 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; }

}

затем в конкретном представлении (форма win, которая реализует 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();

        }
    }
}

тогда ваш докладчик должен выглядеть следующим образом:

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