3 messaggi dal 06 giugno 2013
Salve a tutti e grazie in anticipo.

Mi sto cimentando con Gridview, Formview, Detailsview

Con gli strumenti "automatici" di asp.net, (prima lo facevo in classic asp) riesco con una certa facilità a visualizzare i dati delle tabelle di un db in una pagina asp.net, ed anche ad editarli.

Il problema è che gli strumenti automatici generano form solo con textbox (o sbaglio?), come faccio a modificare il codice sostituendo le textbox con una casella a discesa, o pulsanti di opzione o altro?

Potete postarmi un semplice esempio di codice?

Grazie
papirob
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, benvenuto!

GridView e DetailsView hanno, rispettivamente, una proprietà Columns e una proprietà Fields ci ti permettono di definire con precisione quanti e quali campi visualizzare in essi. Ogni campo può assumere un proprio aspetto: può essere una checkbox, una casella a discesa o qualsiasi altra cosa tu voglia mostrare.

<asp:GridView id="griglia" AutoGenerateColumns="false" runat="server">
    <Columns>
        <asp:BoundField DataField="Nome"  />
        <asp:TemplateField>
            <EditItemTemplate>
                <asp:DropDownList ID="sesso" SelectedValue='<%# Bind("Sesso") %>' OnInit="popolaSessi" runat="server" />
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

In questa GridView ho definito 2 campi:
  • il Nome, che definisco come semplice BoundField e che perciò verrà renderizzato come una textbox in fase di editing.
  • il Sesso, che invece voglio mostrare come casella a discesa. Per far questo ho bisogno di usare un TemplateField che mi permette di personalizzare il contenuto del campo. Nel suo EditItemTemplate esso metto una DropDrownList, la pongo in binding col campo e sottoscrivo il suo evento Init, affinché si possano popolare le varie scelte della casella. Ecco il codice della funzione popolaSessi da mettere nel codefile.
    protected void popolaSessi(object sender, EventArgs e)
    {
        var casella = (DropDownList)sender;
        casella.Items.Add("F");
        casella.Items.Add("M");
    }
    

Nota che sulla GridView ho messo anche l'attributo AutoGenerateColumns="false", altrimenti avrebbe generato automaticamente altre colonne, oltre a quelle che ho definito espressamente in <Columns>.

Il DetailsView funziona in maniera analoga.

Il FormView, invece, è un controllo molto più semplice che non ha automatismi per la generazione dei campi e perciò lascia a te la libertà di definire i template di visualizzazione, modifica ed inserimento. Leggi questo articolo di Daniele, troverai un esempio di codice.
http://www.aspitalia.com/script/821/Personalizzazione-Template-Controllo-FormView-ASP.NET-2.0.aspx

ciao

Enjoy learning and just keep making
3 messaggi dal 06 giugno 2013
Grazie dell'aiuto, faccio delle prove
Ciao papirob, dai un'occhiata a questo link, penso ti sara molto utile: http://forums.asp.net/t/1368247.aspx

Creazione Siti Vicenza
Posizionamento Siti - SEO

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.