18 messaggi dal 05 settembre 2006
Ciao a tutti,
non riesco a capire come funzionano le stored procedure "agganciate" a sqldatasource.Mi spiego meglio.
Ho una gridview alla quale ho consentito di fare operazioni di modifica, delete attraverso delle stored procedure, il solo comando di select dal db non è una procedura.

Il datasource è tipo questo

<cc1:CustomDataSource ID="CustomDataSource1" runat="server"
DeleteCommand="proc_DELETE" DeleteCommandType="StoredProcedure"
SelectCommand="SELECT campo1, campo2, campo3,campo4 from tabella"
UpdateCommand="proc_UPDATE" UpdateCommandType="StoredProcedure">
<DeleteParameters>
<asp:ControlParameter ControlID="GridView1" Name="P_ID" PropertyName="SelectedValue" Type="Decimal" />
</DeleteParameters>
<UpdateParameters>
<asp:ControlParameter ControlID="GridView1" Name="P_ID" PropertyName="SelectedValue" Type="Decimal" />
<asp:ControlParameter ControlID="GridView1" Name="P_1" PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="P_2" PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="P_3" PropertyName="SelectedValue" Type="Decimal" />
</UpdateParameters>
</cc1:CustomDataSource>

la grid agganciata è questa

<asp:GridView ID="GridView1" runat="server"
AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
DataKeyNames="CLASS_ID" DataSourceID="CustomDataSource1" ShowFooter="true"
ShowHeader="true">
<Columns>
<asp:TemplateField HeaderText="C1">
<ItemTemplate>
<asp:Label ID="lblValue" Text='<%# Eval("Campo1") %>' runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tbUpdate" runat="server" Text='<%# Bind("Campo1") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="C2">
<ItemTemplate>
<asp:Label ID="Label1" Text='<%# Eval("Campo2") %>' runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Campo2") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="C3" >
<ItemTemplate>
<asp:Label ID="Label2" Text='<%# Eval("Campo3") %>' runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Campo3") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="C4">
<ItemTemplate>
<asp:Label ID="Label3" Text='<%# Eval("Campo4") %>' runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Campo4") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="true" ShowDeleteButton="true" ShowSelectButton="true"/>

</Columns>
</asp:GridView>

le operazioni di delete e di update (su oracle)generano un errore di passaggio parametri.
C'è qsa che ho omesso nel codice?
su internet non ho trovato risposte chiare in merito.
Grazie in anticipo
M
P.S.La connessione al db viene generata dal codebehind.
Modificato da FirstIT il 27 luglio 2009 18.50 -
che tipo di errore?

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

http://nostromo.spaces.live.com/default.aspx
18 messaggi dal 05 settembre 2006
Ciao, un errore di passaggio parametri

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'proc_DELETE'

non riesco a capire come si sincronizzano i campi della riga della griglia con i parametri da passare alle varie procedure...
anche su internet non ho tovato niente di certo

Grazie per l'aiuto:-)
il numero di parametri che viene passati non è corretto, se togli


<asp:ControlParameter ControlID="GridView1" Name="P_ID" PropertyName="SelectedValue" Type="Decimal" />


da <DeleteParameters> che messaggio d'errore ricevi?

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

http://nostromo.spaces.live.com/default.aspx
cosa fai di preciso nel tuo CustomDataSource ?

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

http://nostromo.spaces.live.com/default.aspx
18 messaggi dal 05 settembre 2006
nulla di particolare..ha solo la connectionstring e il providename settati nell'override dell'OnInit..nient'altro.

cmq mi sa che abbiamo scoperto cosa c'è che non va!
di default il datasource passa anche i valori delle colonne della griglia che vanno a sommarsi ai parametri che passo io...e fa casino.
quindi è necessario scrivere del codice nei vari eventi di deleting updating etc. di settaggio dei reali parametri e rimuovere quelli in più...
diciamo che quindi dovrò customizzare ulteriormente il mio datasource scrivendo del codice per colmare questa lacuna...
cmq sia grazie per il tuo interessamento e aiuto
M

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.