292 messaggi dal 13 giugno 2001
Ciao a tutti!

Un premio a chi mi risolve questo problema!

Il codice seguente mi permette di salvare il valore del DropDownList, ma se seleziono un record passando il valore PartID come QueryString il salvataggio non avviene.

Ci sbatto la testa da giorni...mi sembra una cosa semplicissima ma non riesco a capire perché non va!

Questo e' il codice:

            <asp:FormView ID="fvParts" runat="server" AllowPaging="True" DataKeyNames="PartID"
                HorizontalAlign="Center" DefaultMode="Edit" RenderOuterTable="true" DataSourceID="odsParts">
                <EditItemTemplate>

                    <asp:TextBox ID="Label1" runat="server" Text='<%# Bind("PartID") %>'></asp:TextBox>

                    <asp:DropDownList ID="ddlCategory" runat="server" DataSourceID="odsCategories" DataTextField="Category"
                        DataValueField="CategoryID" AppendDataBoundItems="true" SelectedValue='<%# Bind("CategoryID") %>'>
                        <asp:ListItem Value="0">Select</asp:ListItem>
                    </asp:DropDownList>

                    <asp:ImageButton ID="btnUpdate" runat="server" ImageUrl="~/images/icon/save_16x16.gif"
                        CommandName="Update" />
                </EditItemTemplate>
                <PagerSettings Mode="NumericFirstLast" Position="TopAndBottom" PageButtonCount="40"
                    FirstPageImageUrl="~/images/icon/first_16x16.gif" LastPageImageUrl="~/images/icon/last_16x16.gif"
                    NextPageImageUrl="~/images/icon/right_16x16.gif" PreviousPageImageUrl="~/images/icon/left_16x16.gif" />
            </asp:FormView>
            <asp:ObjectDataSource ID="odsCategories" runat="server" SelectMethod="GetCategories"
                TypeName="CategoriesPartBLL"></asp:ObjectDataSource>
            <asp:ObjectDataSource ID="odsParts" runat="server" SelectMethod="GetPartsPaged" TypeName="PartsBLL"
                UpdateMethod="UpdatePart" InsertMethod="InsertPart" DeleteMethod="DeletePart"
                EnablePaging="true" SelectCountMethod="SelectCount">
                <SelectParameters>
                    <asp:QueryStringParameter Name="PartID" QueryStringField="PartID" Type="String" />
                </SelectParameters>
                <UpdateParameters>
                    <asp:Parameter Name="CategoryID" Type="Int32" />
                    <asp:Parameter Name="partID" Type="Int32" />
                </UpdateParameters>
            </asp:ObjectDataSource>



A chi riesce nell'ardua impresa regalo un buono per un cannolo siciliano quando vi trovate a Palermo! ;-)
Modificato da giuseppe77 il 16 ottobre 2012 18.21 -
190 messaggi dal 09 novembre 2005
Per queste cose preferisco EntityDataSource perché mi sgrava da diverse cose, comunque indagherei prima di tutto sul metodo UpdatePart, sotto debug per verificare se mi arrivano tutti i parametri valorizzati.
292 messaggi dal 13 giugno 2001
sotto debug per verificare se mi arrivano tutti i parametri valorizzati.


I parametri vengono regolarmente passati solo se non seleziono alcun record attraverso la QueryString("PartID").

Viceversa, se passo il valore nella querystring, il valore della DropDownList non viene passato.

Come è possibile tutto ciò?

Secondo me non c'è soluzione.
252 messaggi dal 03 novembre 2003
Forse il problema è dovuto dal fatto che nel momento che dovresti leggere il valore dalla drop (tramite un evento), prima viene rilanciata la query di caricamento dati dall'objectDataSource 'odsCategories'
quindi perdi il valore!

Se è questo poi il tuo problema.. il fatto di non riuscire a leggere il valore selezionato dalla drop, giusto?

Dovresti giocarci un po integrando Ajax in modo da non rilanciare la query che ricarica la drop a ogni evento
oppure un evento javascript onchange che ti memorizzi il valore selezionato in una text Hidden!
E leggi il valore da questo oggetto

it's not difficult to write, but is difficult write that you mean
292 messaggi dal 13 giugno 2001
Si il problema è proprio questo.

Perché occorre andare a disturbare Ajax o Javascipt?

Perché questo comportamento da parte del FormView/ObjectDataSource?
252 messaggi dal 03 novembre 2003
il problema potrebbe essere dovuto dal fatto che ho spiegato nelle prime righe.
Riparte sempre il caricamento della Drop da parte dell'ObjectDataSource.
Io avevo trovato diversi comportamenti non previsti e sbattuto la testa per cercare di capire come gli eventi vengono eseguiti.

Se non riesci a capire col Debug (spesso io lavoro su Server e non riesco a eseguire il debug)prova con la visualizzazione dell'orario con secondi in una label.
Lo fai sia all'evento per leggere i dati
poi un evento che andrai a gestire nell'objectdataSource ecc ecc
Potresti oltretutto leggerti il dato selezionato della Combo in un evento dell'ObjectDataSource prima della chiamata per il ricaricamento dei dati...
insomma, è difficile ora capire come risolvere.
Ci possono essere diverse vie d'uscita
Basta provarle!

Comunque sia dato che la Combo è già associata all'objectdatasource, parte sempre!!!!

Ah.. potresti per esempio leggere il dato della Combo nel Load utilizzando questo modo



if(Page.isPostBack==true)
{
   string ValoreCombo=MyCombo.SelectedValue;
}


insomma, prova un po tutto quello che ti ho detto!

ciaooo

it's not difficult to write, but is difficult write that you mean
93 messaggi dal 25 maggio 2005
ma il tutto è automatico oppure hai anche del codice C#?
292 messaggi dal 13 giugno 2001
No tutto in automatico....

Alzo la posta in gioco..mi voglio rovinare...un cannolo più una cassata a chi risolve il problema! ;-)

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.