73 messaggi dal 02 agosto 2007
ciao, avrei la necessita che quando inserisco un nuovo record (visualizzato in un detail view), a una certa voce non ci sia la textbox, ma una DataList (o simile) che mi elenca i valori della colonna di un'altra tabella, perchè è una chiava esterna.

come si fa ?????

pleeeeeazzz answer me!!!
426 messaggi dal 17 aprile 2006
metti un campo di tipo template nel detailsview. nell'EditItemTemplate metti ad esempio una dropdownlist con il suo datasource settato e con il selectedValue in bind con il campo che deve popolare es:
<asp:DropDownList ID="DLDescTestata" runat="server" DataSourceID="ObjDesTestata" DataTextField="DescrizioneTestata" DataValueField="IdTestata" SelectedValue='<%# Bind("IdTestata") %>'>
</asp:DropDownList>
<asp:SqlDataSource ID="ObjDesTestata" ConnectionString='<%$ ConnectionStrings:SqlConn %>' runat="server" SelectCommand="Select idTestata, DescrizioneTestata from Testate Order By DescrizioneTestata">
</asp:SqlDataSource>

il asp:SqlDataSource non deve stare dentro al deteailsView (anche se ci potrebbe stare cmq e funzionare...)

ciao
Alessandro

Ciao Alessandro
73 messaggi dal 02 agosto 2007
ciao, grazie per la risposta! anche se sto provando, ma non funzia.

mi dici di inserire un campo di tipo template. è indifferente
headertemplate
footertemplate
pager template??

sarebbe giusto scrivere il codice questo modo?

<header|footer|pager template>
<EditItemTemplate>
<asp:DropDownList>
</asp:DropDownList>
</EditItemTemplate>
</header|/footer|/pager template>


grazie ancora!
426 messaggi dal 17 aprile 2006
nel detailsview trovi due tag apertura e chiusura Fields
<Fields>
</Fields>
all'interno metti i tag TemplatedField sia apertura che chiusura
con all'interno i tag delle varie situazioni cioè item edititem insertitem con all'interno il controllo
<Fields>
<asp:TemplatedField>
<EditItemTemplate>
<asp:DropDownList ID="DLDescTestata" runat="server" DataSourceID="ObjDesTestata" DataTextField="DescrizioneTestata" DataValueField="IdTestata" SelectedValue='<%# Bind("IdTestata") %>'> 
</asp:DropDownList> 
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="DLDescTestata" runat="server" DataSourceID="ObjDesTestata" DataTextField="DescrizioneTestata" DataValueField="IdTestata" SelectedValue='<%# Bind("IdTestata") %>'> 
</asp:DropDownList> 
</InsertItemTemplate>
<ItemTemplate>
<asp:DropDownList ID="DLDescTestata" runat="server" Enabled="false" DataSourceID="ObjDesTestata" DataTextField="DescrizioneTestata" DataValueField="IdTestata" SelectedValue='<%# Bind("IdTestata") %>'> 
</asp:DropDownList> 
</ItemTemplate>
</asp:TemplatedField>

</Fields>

fuori dal DetailsView metti il tuo datasource
<asp:SqlDataSource ID="ObjDesTestata" ConnectionString='<%$ ConnectionStrings:SqlConn %>' runat="server" SelectCommand="Select idTestata, DescrizioneTestata from Testate Order By DescrizioneTestata">
</asp:SqlDataSource>

oppure semplicemente usa il designer, trascini la colonna con il campo interessato e la trasformi in template. poi nel source sostituisci i textbox con il dropdownlist

Ciao Alessandro
73 messaggi dal 02 agosto 2007
Scusami, ma è un bel po che sto a provare, ma mi restuisce sempre questo errore:

'System.Data.DataRowView' non contiene una proprietà con nome 'mansioni'

dove 'mansioni' per me è sia il nome del campo che deve ospitare la DropDOwnList, sia il nome della tabella da cui richiamre i valori da visualizzare, in particolare dalla colonna 'tipo' che è chiave.

spero di essermi fatto capire

grazie ancora
ciao!
426 messaggi dal 17 aprile 2006
il messaggio dice che nella select che tu passi al detailsview gli manca il campo mansioni
posta la select del datasource associato al detailsview e posta anche la tabella che devi inserire (intendo i nomi dei campi)

Ciao Alessandro
73 messaggi dal 02 agosto 2007
posto il codice:

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="dipendente_id" DataSourceID="SqlDataSource2" Height="50px" Width="176px" OnPageIndexChanging="DetailsView1_PageIndexChanging">
<Fields>
<asp:BoundField DataField="nome" HeaderText="nome" SortExpression="nome" />
<asp:BoundField DataField="cognome" HeaderText="cognome" SortExpression="cognome" />
...
<asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="elencomansioni" runat="server" DataSourceID="SqlDataSource3" DataTextField="mansioni" DataValueField="tipo" SelectedValue='<%# Bind("tipo") %>'>
</asp:DropDownList>
</EditItemTemplate>

<InsertItemTemplate>
<asp:DropDownList ID="elencomansioni" runat="server" DataSourceID="SqlDataSource3" DataTextField="mansioni" DataValueField="tipo" SelectedValue='<%# Bind("tipo") %>'>
</asp:DropDownList>
</InsertItemTemplate>

<ItemTemplate>
<asp:DropDownList ID="elencomansioni" runat="server" Enabled="false" DataSourceID="SqlDataSource3" DataTextField="mansioni" DataValueField="tipo" SelectedValue='<%# Bind("tipo") %>'>
</asp:DropDownList>
</ItemTemplate>

</asp:TemplateField>
<asp:BoundField DataField="formazione" HeaderText="formazione" SortExpression="formazione" />
...

</asp:DetailsView>


mentre il data source is this:

<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:securejobConnectionString %>"
SelectCommand="SELECT [tipo] FROM [mansioni] ORDER BY [mansione_id]"></asp:SqlDataSource>


grazie mille ancora per l'interessamento!!!!!!!


scusami.. l'ho modificato perchè ho sbagliato a copiare il codice...
Modificato da skater il 01 ottobre 2007 16.50 -
426 messaggi dal 17 aprile 2006
allora:
il datasource3 deve essere:
select mansione_id , Tipo from mansioni order by mansione_id

il dropdownlist deve avere come datavaluefile mansione_id e come DataTextField="Tipo"

poi mi manca la info sulla tabella da riempire
se il campo della tabella da riempire si chiama mansioni allora dovrebbe essere ok altrimenti modifica il selectedValue='<%# Bind("vero_nome_del_campo") %>'

infine l'inertItemTemplate è toppato perchè se proprio vuoi mettere i listitem a mano devi comunque passare come valore l'id_Mansione (questo ammesso che nella tabella principe da riempire ci sia l'id della tabella mansioni e non il testo) ed inoltre il selectdeValue lo devi mettere in bind con il nome del campo da popolare altrimente il datasource nell'insert non sa da dove pescare il valore

Ciao Alessandro

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.