Я новичок во всей вещи MVP и медленно обнимаю вокруг себя все это. Проблема, с которой я сталкиваюсь, заключается в том, как оставаться в соответствии с методологией MVP при заполнении GridViews (и ddls, но мы будем решать это позже).Как связать данные и манипулировать им в GridView с MVP
Можно ли подключить его прямо к 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();
}
}
А, Возможно, вы не хотите использовать gridviews? Я собираюсь сделать еще несколько исследований по наилучшему способу сделать это в дизайне, который я ищу. Спасибо, что дал мне новый путь к исследованиям. – DotNetDan
Несомненно, но помните, что gridview может быть огромным временным периодом, так что фактор тоже. Пока связь между базой данных с gridview явно документирована, вы должны быть в порядке для будущих выпусков. –