Collegare DetailsView e GridView

Mattepuffo's logo
Collegare DetailsView e GridView

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
  • email
  • 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.


Condividi

Commentami!