9 messaggi dal 09 novembre 2006
Salve a tutti.
Diciamo che sono abbastanza nuovo nella programmazione in ambito ASP.NET 2.0 e
avrei questo tipo di necessità.

ho una gridview che uso per modificare/eliminare record di un db sql server 2005.
un campo di questo db è ID di un'altra tabella. per es. IDClassificazione dovrebbe referenziarsi ad una tabella Classificazioni con 2 campi: IDClassificazione e Descrizione che dovrebbe essere popolati su una dropdownlist.

vorrei fare in modo che l'utente veda la descrizione della dropdownlist che contiene i valori della mia tabella Classificazioni e che questa dropdownlist faccia parte di una generica riga della GridView.

ho provato ad inserire un "<asp:TemplateField>" nella costruzione della GridView, ma non ho capito successivamente quale tipo di template devo utilizzare.

ricapitolando, ho questa situazione:
tabella1:
idClassificazione Int
ecc........

tabella2:
idClassificazione Int
Descrizione text

i campi di bind sono idClassificazione, mentre il campo da dover visualizzare è Descrizione.

grazie in anticipo x il vostro aiuto.

Lory
usi un SqlDataSource? come sorgenti dati?

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
9 messaggi dal 09 novembre 2006
ciao Marco.
si uso due oggetti di tipo SqlDataSource:
il primo della tabella generale Informazioni che collego alla gridview come DataSourceID="SqlInformazioni"

<asp:SqlDataSource ID="SqlInformazioni" runat="server" ConnectionString="<%$ ConnectionStrings:MiaConnectionString %>"

la seconda che dovrei collegare alla dropdownList che dovrebbe leggere i valori nella seconda tabella

<asp:SqlDataSource ID="SqlClassificazioni" runat="server" ConnectionString="<%$ ConnectionStrings:MiaConnectionString %>"

grazie 1000 x il tuo aiuto
9 messaggi dal 09 novembre 2006
ciao Marco.
sono riuscito a far funzionare la DropDownList nel momento in cui vado in modifica di una riga, con questo codice:


<asp:TemplateField HeaderText="idClassificazione" SortExpression="idClassificazione">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlClassificazioni"
DataTextField="DescClassificazione" DataValueField="IdClassificazione" SelectedValue='<%# Bind("idClassificazione") %>'
Width="176px">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>

ora ho 2 ordini di problemi:::

1. gestire il caso in cui il valore della DropDownList, non sia ANCONA presenta nella tabella principale (cioè non esiste relazione tra la tabella che contiene i valori e quella di trascodifica del codice) - dovrei intervenire da codice VB o c# ????;

2. come poter visualizzare la descrizione del contenuto BIND.ato nel caso in cui sia in visualizzazione GRIGLIA (gridview).

grazie ancora x il tuo prezioso aiuto
ciao gaby01, non credo di aver capito bene, sarà l'ora...per me 9:30 sono prima mattina

puoi farmi un esempio?

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
9 messaggi dal 09 novembre 2006
bg marco.
cercherò di essere più chiaro possibile.

ho due tabelle: tab1 con diversi campi, uno dei quali è un INTERO che memorizza il valore di una seconda tabella, tab2 che ha l'id (INTERO) e un campo testo che contiene la descrizione.

praticamente ho capito come fare a visualizzare una dropdownlist all'interno di una gridview o DetailsView. Nel caso in cui ad esempio mi trovo nella DetailsView, prima di clickare sulla selezione "MODIFICA" del record, vedo il valore intero nel rispettivo campo, mentre se entro in modifica del record, mi compare la DropDownList con il testo che corrisponde al precedente valore intero visualizzato. In sostanza in fase di visualizzazione del record ho un valore INTERO, mentre in MODIFICA ho il suo rispettivo valore come DESCRIZIONE..

<asp:TemplateField HeaderText="idClassificazione" SortExpression="idClassificazione">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlClassificazioni"
DataTextField="DescClassificazione" DataValueField="IdClassificazione" SelectedValue='<%# Bind("idClassificazione") %>'
Width="176px">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>


se noterai ho messo solo la sezione <EditItemTemplate>. forse dovrei leggere il campo descrizione con una BIND o EVAL su un'altra sezione dello stesso <asp:TemplateField>...

secondo punto.
se in fase di modifica del record di tab1 non ho una corrispondenza (COME POTREBBE ACCADERE) con la tab2, mi va in errore... cosa bisogna fare in questo caso???


spero di essere stato più chiaro altrimenti riproverò....

grazie ancora del tuo aiuto

Lory
per la prima domanda, la TemplateField ha sezioni per la visualizzazione ReadOnly e L'insert dipende da quello che vuoi fare.

per il secondo quesito, che tipo di errore ricevi? comunque associa a SelectedValue un metodo:

SelectedValue='<%# MioMetodo( Eval("idClassificazione") %>'

il metodo avrà un parametro di tipo Object e restituirà una stringa.

e inseriscia in modo dichiarativo un Item della DropDownList per i casi in cui non ci sia corrispondenza, così il metodo selezionerà questo item

ciao marco
Modificato da nostromo il 11 settembre 2007 11.51 -

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

http://nostromo.spaces.live.com/default.aspx
9 messaggi dal 09 novembre 2006
questo è l'errore che mi viene generato nel caso in cui non ci sia corrispondenza nei dati tra la tabella principale (tab1) e la tabella secondaria (tab2) legata alla DropDownList:

SelectedValue in 'DropDownClassificazioni' non valido, poiché non è incluso nell'elenco di elementi.
Nome parametro: value
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.ArgumentOutOfRangeException: SelectedValue in 'DropDownClassificazioni' non valido, poiché non è incluso nell'elenco di elementi.
Nome parametro: value

grazie

Lory

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.