Collegare DetailsView e GridView
In questa guida vi spiego come collegare una DetailsView a una GridView.
Do per scontato che sappiate cosa siano e come si usano; inoltre io uso un database Sql Server.
Supponiamo di avere database con una classica tabella clienti che ha i seguenti campi:
- id
- nome
- cognome
- data di nascita
- città
- comune
- codice fiscale
Di queste voci vogliamo mostrare pubblicamente solo id, nome e cognome.
Per fare questo possiamo usare tranquillamente una GridView impostando manualmente i campi da visualizzare.
Per vedere tutti le altre voci collegate invece impostiamo una DetailsView, collegandola alla GV.
Come fare?
Prima di tutto impostiamo la GV con il suo SqlDataSource e tutto il resto.
Poi impostiamo la DetailsView con il suo SqlDataSource e tutto il resto.
Se è stato fatto tutto correttamente vedremo la GV e la DV; questa seconda prenderà come riferimento il primo record.
Per collegare i due controlli server prima di tutto attiviamo AutoGenerateSelectButton nella GV.
Poi modifichiamo l'SqlDataSource del DV.
<asp:SqlDataSource ID="SqlDV" runat="server" ConnectionString="<%$ ConnectionStrings:MYDATABASE %>"
SelectCommand="SELECT * FROM [clienti]" FilterExpression="id='{0}'">
<FilterParameters>
<asp:ControlParameter Name="id" ControlID="GridView" PropertyName="SelectedValue" />
</FilterParameters>
</asp:SqlDataSource>
Come vedete ho aggiunto una FilterExpression collegandola a un FilterParameter, collegato alla GV attraverso la voce ControlID.
Così facendo ogni volta che cliccherete su Select nella GV la DV camierà prendenndo in considerazione i dettagli del record selezionato.
TIPS
Sul db che uso in ufficio i campi id sono contrassegnati dal segno # (cancelletto).
Questo mi dava un problema in fase di visualizzazione della pagina:
The expression contains invalid date constant '#='28''.
Ho risolto modificando la FilterExpression così:
FilterExpression="[id#]='{0}'"
(Supponendo che il campo id abbia il cancelletto).
In pratica l'ho messo tra parentesi quadre.
girdview detailsview asp asp.net c# sqldataso
Commentami!