Problemi con GridView

venerdì 07 novembre 2008 - 17.34

satomi Profilo | Junior Member

Ciao a tutti
Ho un problema con la GridView. ho creato la gridview e al suo interno ci sono dei EditItemTemplate che utilizzano dei DropDownList, il problema è che quando faccio l'Update non funziona
provo a postare un po' di codice magari capite meglio:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="id_permessi" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" Width="577px" OnRowUpdated="GridView1_RowUpdated">
<Columns>
<asp:BoundField DataField="id_permessi" HeaderText="id_permessi"
SortExpression="id_permessi" Visible="true" ReadOnly="True" />
<asp:BoundField DataField="id_utente" HeaderText="id_utente"
SortExpression="id_utente" Visible="False" />
<asp:BoundField DataField="id_cc_divisioni" HeaderText="id_cc_divisione"
SortExpression="id_cc_divisione" Visible="False">
<HeaderStyle CssClass="tdintestazione" />
<ItemStyle CssClass="tdtxt" />
</asp:BoundField>
<asp:TemplateField SortExpression="nome_divisione" ItemStyle-CssClass="tdtxt" HeaderStyle-CssClass="tdintestazione" HeaderText="Divisione/Azienda" >

<EditItemTemplate>
<asp:DropDownList ID="id_cc_divisione" runat="server" CssClass="tdtxt" AutoPostBack="true" DataSourceID="SqlDataSource2" DataTextField="nome_divisione" DataValueField="id_cc_divisioni" SelectedValue='<%#DataBinder.Eval(Container.DataItem, "id_cc_divisioni")%> ' >
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:GroupwareConnectionString %>"
SelectCommand="SELECT id_cc_divisioni, nome_divisione FROM CC_divisioni WHERE (attivo = 1) ORDER BY nome_divisione" ></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate ><%#DataBinder.Eval(Container.DataItem, "nome_divisione")%> </ItemTemplate>
<HeaderStyle CssClass="tdintestazione"></HeaderStyle>
<ItemStyle CssClass="tdtxt"></ItemStyle>
</asp:TemplateField>
<asp:BoundField DataField="id_cc_reparto" HeaderText="id_cc_reparto"
SortExpression="id_cc_reparto" Visible="False">
<HeaderStyle CssClass="tdintestazione" />
<ItemStyle CssClass="tdinput" />
</asp:BoundField>

<asp:TemplateField SortExpression="nome_reparto" ItemStyle-VerticalAlign="Middle" ItemStyle-CssClass="tdinput" HeaderStyle-CssClass="tdintestazione" HeaderText="Reparto" >
<EditItemTemplate>
<asp:DropDownList ID="reparto" runat="server" CssClass="tdinput" DataSourceID="SqlDataSource3" DataTextField="nome_reparto" DataValueField="id_cc_reparto" ><%-- ,"{0:int}" SelectedValue='<%#DataBinder.Eval(Container.DataItem, "id_cc_reparto")%> '--%>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:GroupwareConnectionString %>"
SelectCommand="SELECT id_cc_reparto, nome_reparto FROM CC_reparto WHERE (attivo=1 and id_cc_aziende = @id_cc_aziende) " >
<SelectParameters>
<asp:ControlParameter ControlID="id_cc_divisione" Name="id_cc_aziende" PropertyName="SelectedValue" Type="Int16" />
</SelectParameters>
</asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate ><%#DataBinder.Eval(Container.DataItem, "nome_reparto")%> </ItemTemplate>

<HeaderStyle CssClass="tdintestazione"></HeaderStyle>

<ItemStyle VerticalAlign="Middle" CssClass="tdinput"></ItemStyle>
</asp:TemplateField>

<asp:BoundField DataField="id_funzioni_aziendali"
HeaderText="id_funzioni_aziendali" SortExpression="id_funzioni_aziendali"
Visible="False" />

<asp:TemplateField SortExpression="nome_funzione_esteso" ItemStyle-CssClass="tdtxt" HeaderStyle-CssClass="tdintestazione" HeaderText="Funzione Aziendale" >

<EditItemTemplate>
<asp:DropDownList ID="funzione_aziendale" runat="server" CssClass="tdtxt" DataSourceID="SqlDataSource4" DataTextField="nome_funzione_esteso" DataValueField="id_funzioni_aziendali" SelectedValue='<%#DataBinder.Eval(Container.DataItem, "id_funzioni_aziendali")%> ' >
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource4" runat="server"
ConnectionString="<%$ ConnectionStrings:GroupwareConnectionString %>"
SelectCommand="SELECT id_funzioni_aziendali, nome_funzione_esteso FROM funzioni_aziendali where id_funzioni_aziendali<>6 ORDER BY id_funzioni_aziendali DESC" ></asp:SqlDataSource>
</EditItemTemplate>

<ItemTemplate ><%#DataBinder.Eval(Container.DataItem, "nome_funzione_esteso")%> </ItemTemplate>

<HeaderStyle CssClass="tdintestazione"></HeaderStyle>

<ItemStyle CssClass="tdtxt"></ItemStyle>

</asp:TemplateField>

<asp:CommandField ButtonType="Image" CancelImageUrl="~/icone/v/annulla.gif"
DeleteImageUrl="~/icone/v/lente.gif" EditImageUrl="~/icone/v/lente.gif"
InsertImageUrl="~/icone/v/lente.gif" NewImageUrl="~/icone/v/lente.gif"
SelectImageUrl="~/icone/v/lente.gif" ShowEditButton="True"
UpdateImageUrl="~/icone/v/modifica.gif" UpdateText="" >
<HeaderStyle CssClass="tdintestazione" />
</asp:CommandField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:GroupwareConnectionString %>"
SelectCommand="FE_visualizza_permessi_utente"
SelectCommandType="StoredProcedure"

UpdateCommand="UPDATE permessi SET id_utente = @id_utente, id_cc_divisione = @id_cc_divisione, id_cc_reparto = @id_cc_reparto, tipo = @tipo WHERE (id_permessi = @id_permessi)" OnUpdated="SqlDataSource1_Updated">
<SelectParameters>
<asp:QueryStringParameter Name="id_utente" QueryStringField="id_utente"
Type="Int32" />

</SelectParameters>
<UpdateParameters>
<asp:QueryStringParameter Name="id_utente" QueryStringField="id_utente"
Type="Int32" Direction="input" />
<asp:ControlParameter ControlID="gridview1" Name="id_cc_divisione"
PropertyName="SelectedValue" Direction="input" />
<asp:ControlParameter ControlID="gridview1" Name="id_cc_reparto"
PropertyName="SelectedValue" Direction="input" />
<asp:ControlParameter ControlID="gridview1" Name="tipo"
PropertyName="SelectedValue" Direction="input" />
<asp:ControlParameter ControlID="gridview1" Name="id_permessi"
PropertyName="SelectedValue" Direction="input" />
</UpdateParameters>
</asp:SqlDataSource>


I parametri dell'update penso che non li prenda. Ho dato il valore anche al DataKeyNames che è la chiave della mia tabella.
Nel mio page load non faccio nessuna operazione.

Spero che qualcuno riesca a darmi una mano.

Grazie 1000

ciao




seanmhall Profilo | Newbie

non ho molto tempo per adattare al tuo codice, ma guarda qua.

Inserisci nell'evento ItemUpdating della gridview

' Riferimento alla dropdown
Dim dropDown as DropDownList = Ctype(gridView1.FindControl("la tua drop") , DropDownList)

'C# DropDownList dropDown = (DropDownList)gridView1.FindControl("la tua drop");


'Usane il valore
e.NewValues("il tuo parametro") = dropDown .SelectedValue

'C# e.NewValues("il tuo parametro") == dropDown.SelectedValue;

Ciao,
Sean

p.s. (per l'insert devi usare e.Values)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5