Je suis novice en matière de MVP et je me mets lentement à l'œuvre. Le problème que je rencontre est de savoir comment rester cohérent avec la méthodologie MVP lors du remplissage de GridViews (et ddls, mais nous y reviendrons plus tard).Comment lier des données et le manipuler dans un GridView avec MVP
Est-il acceptable de le connecter directement à un ObjectDataSourceID? Pour moi, cela semble faux, car il contourne toute la séparation des préoccupations MVP a été fait pour faire.
Donc, avec cela dit, comment puis-je le faire? Comment gérer le tri (est-ce que j'envoie des événements de gestionnaire à la couche de présentation, si oui, à quoi cela ressemble-t-il dans le code)? En ce moment j'ai un GridView qui n'a pas de tri. Code ci-dessous.
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; }
}
}
Interface (IlistCustomer.cs): est-ce mauvais envoi dans un contrôle GridView entier?
public interface IlistCustomer
{
GridView UserGridView { set; get; }
}
Le présentateur (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();
}
}
Ah, Donc, vous ne voulez probablement pas utiliser gridviews hein? Je vais faire d'autres recherches sur la meilleure façon de faire cela dans le design que je cherche. Merci de m'avoir donné un nouveau chemin à la recherche. – DotNetDan
Bien sûr, mais rappelez-vous que le gridview peut être un énorme gain de temps, donc aussi bien. Tant que la connexion entre la base de données et le gridview est clairement documentée, vous devriez être d'accord pour les futures versions. –