Visual Studio 11 (vNext), la prossima versione del noto ambiente di sviluppo Microsoft, porterà con se numerose novità che con questa serie di post stiamo cercando di affrontare per non trovarci impreparati quando Visual Studio 11 sarà rilasciato ufficialmente. Sempre in tema di Data Binding, dopo aver parlato del nuovo paradigma denominato Model Binding ed aver visto un piccolo esempio di come sia diventato davvero semplice mettere in binding un controllo server con i nostri metodi di accesso ai dati, vedremo ora come sarà altrettanto semplice impostare dei filtri sui dati da visualizzare.
Nel post precedente abbiamo visto l'esempio di una GridView di prodotti:
Che popolavamo con un semplice metodo di recupero dati:
public IQueryable<Product> GetProducts() { var dbECommerce = new dbECommerce(); return dbECommerce.Products.Include(o => o.Orders); }
Se oltre a cià ora volessimo anche fare in modo che l'utente possa filtrare i dati sulla base di un certo parametro Value Providers nome
public IQueryable<Product> GetProducts([QueryString]string name) { IQueryable<Product> query = dbECommerce.Products; if (!String.IsNullOrWhiteSpace(name)) { query = query.Where(p => p.Name.Contains(name)); } return query; }
Notiamo l'attributo [QueryString]
name
null
Se poi volessimo dare un nome diverso al parametro in querystring, sarà sufficiente specificare il nome tra parentesi:
public IQueryable<Product> GetProducts([QueryString("n")]string name)
Ovvio, anche prima era possibile fare la stessa cosa ma certamente non con questa semplicità .
Andando avanti, ipotizziamo ora di voler filtrare i prodotti non più per nome ma per categoria e di aver predisposto allo scopo una DropDownList
public IQueryable<Product> GetProducts([Control] int? category) { IQueryable<Product> query = dbECommerce.Products; if (category.HasValue) { query = query.Where(p => p.IDCategory == category); } return query; }
Anche in questo caso abbiamo utilizzato un attributo ma questa volta l'attributo è [Control] category ID="category"
Questo è sufficiente per filtrare i prodotti sulla base della categoria selezionata nella DropDownList. Come vediamo il parametro è di tipo int nullable int Where