Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

ObjectDataSource - modificare runtime il valore di un parametro.

Debbo dire personalmente che non ho mai apprezzato spasmodicamente gli ObjectDataSource per varie ragioni,ma indubbiamente in molti casi sono comodi. Un problema comunque è però quello di dovere impostare a runtime un valore per un parametro. Supponiamo di avere il seguente ObjectDataSource

<asp:ObjectDataSource ID="SectionsForCustomer" runat="server" SelectMethod="Select" TypeName="MyNamespace.MyType.etcetcetc"> <SelectParameters> <asp:Parameter DefaultValue="-1" Direction="Input" Size="4" Name="customerId" Type="Int32" /> </SelectParameters> </asp:ObjectDataSource>
In pratica ho quindi una classe il cui metodo Select() accetta un intero che mi specifica il cliente che deve essere gestito, per questa ragione ho messo un parametro apposito, e per impostare il suo valore via codice debbo intercettare l'evento Selecting dell'objectDataSource

Protected Sub SectionsForCustomer_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs) Handles SectionsForCustomer.Selecting e.InputParameters("customerId") = Me.CustomerId End Sub

In questo caso ho impostato il valore del parametro in base ad una proprietà del controllo utente su cui risede il codice, l'importante è capire che nell'evento selecting io posso lavorare con i parametri che verranno passati al metodo Select(). Questi parametri sono infatti esposti tramite e.InputParameters che è di tipo IOrderedDictionary. Purtroppo da più parti in rete ho invece trovato questa soluzione

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load SectionsForCustomer.SelectParameters(0).DefaultValue = Me.CustomerId.ToString() End Sub

ovvero utilizzare un metodo come il load (che viene generato prima della selezione da parte dell'objectdatasource) e cambiare la proprietà defaultValue del parametro. Questo a mio avviso rende il metodo poco chiaro e poi obbliga ad impostare il parametro come stringa (notate il ToString() ) perchè la proprietà DefaultValue viene memorizzata come stringa :(. Morale della favola, non sempre in internet si trovano i consigli giusti :).

Alk.

Print | posted on mercoledì 28 febbraio 2007 15:16 |

Feedback

Gravatar

# re: ObjectDataSource - modificare runtime il valore di un parametro.

Test
05/03/2007 20:36 | Gian Maria
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET