99 messaggi dal 05 ottobre 2006
Ciao a tutti, vorrei introdurre una gestione corretta per l'utilizzo di DataSource nei gridView

spulciando i vari esempi trovati sul sito Ms ho trovato spesso questa modalità di gestione

<asp:GridView ID="Products" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
DataSourceID="ObjectDataSource1" EnableViewState="False" AllowPaging="True" OnDataBound="Products_DataBound" AllowSorting="True">
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" />
<asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True"
SortExpression="CategoryName" />
<asp:BoundField DataField="SupplierName" HeaderText="Supplier" ReadOnly="True"
SortExpression="SupplierName" />
<asp:BoundField DataField="UnitPrice" HeaderText="Price" DataFormatString="{0:C}" HtmlEncode="False" />
<asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" SortExpression="Discontinued" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetProducts" TypeName="ProductsBLL" DeleteMethod="DeleteProduct">
<DeleteParameters>
<asp:Parameter Name="productID" Type="Int32" />
</DeleteParameters>
</asp:ObjectDataSource>




Dal punto di vista delle performance (e cmq per un'applicazione complessa) la considerate la soluzione adatta?? Intendo passare nell'ObjectDataSource il nome del metodo e della classe di riferimento (in questo caso ProductsBLL) per effettuare operazioni di select/delete... oppure esiste una soluzione migliore?.

Secondo dubbio: per quanto riguarda i parametri, che differenza c'è tra la modialità sopra indicata ed il passaggio dei valori da codice? (ad esempio per un'operazione di insert che richeide diversi parametri... magari tipizzati)

Grazie per i suggerimenti!
Modificato da sciamano il 25 gennaio 2007 11.50 -
l'ObjectDataSource e non solo (anche GridView & co) fa un uso intensivo della reflection è naturale che le performace calino, ma non lo faranno in modo percettibile, specialmente in un applicazione web.

quindi vai tranquillo.

specifiando la proprietà DataObjectTypeName puoi usare oggetti per le operazioni di insert, update e delete, cose risolvi il problema se questi comandi richiedessero un largo numero di parametri.

ciao marco
Modificato da nostromo il 25 gennaio 2007 12.02 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
99 messaggi dal 05 ottobre 2006
Grazie per la risposta! Scusate ma ho ancora un dubbio:

non mi piace molto gestire il DataSource da HTML preferirei la soluzione da codice, ma quale sarebbe la modalità di alimentazione corretta di un GridView da codice, usando un DataSet tipizzato come fonte dati?

Grazie infinite!
puoi alimentare il GridView con quasi qualsiasi cosa, nom necessariamente un DataSet ne un DataSet tipizzato, anzi se no ti servono tutte le features che offreè uno speco di risore.

meglio una classe custom leggera.

comunque non ci sono controindicazione dell'usare un OvjectDataSource, anzi failità enormemente il binding dei dati, si piò virtualmente usare in tutti i casi, tranne non tu abbia la necessità di implementare pattern particolari.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
99 messaggi dal 05 ottobre 2006
Scusa ma credo di non essermi spiegato. Quello che non capisco è se l'inserimento dei metodi direttamente nell'HTML (Es: SelectMethod="GetProducts" ) è una soluzione che velocizza, a livello operativo, la scrittura del codice ... a discapito di performance o di un maggiore controllo che si potrebbe avere operando direttamente nel codice

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetProducts" TypeName="ProductsBLL" DeleteMethod="DeleteProduct">
<DeleteParameters>
<asp:Parameter Name="productID" Type="Int32" />
</DeleteParameters>
</asp:ObjectDataSource>

Se creassi un semplice oggetto DataSource e passassi i parametri da codice, cosa cambierebbe?
426 messaggi dal 17 aprile 2006
ciao
ti posto un link dove potrai vedere le prove di comparazione tra sqlDataSource e databind() fatto a mano.
http://geekswithblogs.net/lorint/archive/2006/02/20/70195.aspx

una cosuccia sarebbe da chiarire, credo tu lo sappia ma per gli altri lettori novizi è il caso di sottolinearlo. In realtà non stai scrivendo i metodi nell'HTML ma nel sorgente aspx, cioè li inserisci lato server e non vengo visualizzati nell'HTML prodotto.

in linea di massima puoi anche inserire il codice lato server (page_load Button_click) nello stesso file aspx senza usare un file cs per inserire le proprie routine (<script runat="server" type c#...). Ma questo non significa affatto scrivere codice nell'HTML

spero di essere stato chiaro
ciao

Ciao Alessandro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.