Я новичок во всем, что касается MVP, и постепенно осваиваюсь. Проблема, с которой я сталкиваюсь, заключается в том, как оставаться в соответствии с методологией MVP при заполнении GridViews (и ddls, но мы рассмотрим это позже).
Можно ли подключить его напрямую к ObjectDataSourceID? Мне это кажется неправильным, потому что это обходит все разделение интересов, которое было сделано MVP.
Итак, с этим сказал, как мне это сделать? Как мне обработать сортировку (пересылать события-обработчики на уровень представления, если так, как это выглядит в коде)?
Прямо сейчас у меня есть GridView, который не имеет сортировки. Код ниже.
ListCustomers.aspx.cs:
public partial class ListCustomers : System.Web.UI.Page, IlistCustomer
{
protected void Page_Load(object sender, EventArgs e)
{
//On every page load, create a new presenter object with
//constructor recieving the
// page's IlistCustomer view
ListUserPresenter ListUser_P = new ListUserPresenter(this);
//Call the presenter's PopulateList to bind data to gridview
ListUser_P.PopulateList();
}
GridView IlistCustomer.UserGridView
{
get { return gvUsers; }
set { gvUsers = value; }
}
}
Интерфейс (IlistCustomer.cs): это плохая отправка во всем элементе управления Gridview?
public interface IlistCustomer
{
GridView UserGridView { set; get; }
}
Ведущий (ListUserPresenter.cs):
public class ListUserPresenter
{
private IlistCustomer view_listCustomer;
private GridView gvListCustomers;
private DataTable objDT;
public ListUserPresenter( IlistCustomer view)
{
//Handle an error if an Ilistcustomer was not sent in)
if (view == null)
throw new ArgumentNullException("ListCustomer View cannot be blank");
//Set local IlistCustomer interface view
this.view_listCustomer = view;
}
public void PopulateList()
{
//Fill local Gridview with local IlistCustomer
gvListCustomers = view_listCustomer.UserGridView;
// Instantiate a new CustomerBusiness object to contact database
CustomerBusiness CustomerBiz = new CustomerBusiness();
//Call CustomerBusiness's GetListCustomers to fill DataTable object
objDT = CustomerBiz.GetListCustomers();
//Bind DataTable to gridview;
gvListCustomers.DataSource = objDT;
gvListCustomers.DataBind();
}
}