666 messaggi dal 10 febbraio 2006
Dato questo codice nella aspx:
    <asp:DetailsView ID="DetailsView2"  runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataSourceID="SqlDataSource4">
        <Fields>
            <asp:BoundField DataField="testo" HeaderText="testo" SortExpression="testo" />
        </Fields>
    </asp:DetailsView>
    <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:ASPNETDBConnectionString23 %>" SelectCommand="SELECT testo FROM content_categorie WHERE (campo_focus = @campo_focus)" >
        <SelectParameters>
            <asp:Parameter Name="campo_focus" />         
        </SelectParameters>
    </asp:SqlDataSource>   

e quest'altro codice nella aspx.vb
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If ListBox1.SelectedValue <> "" Then
            If ListBox2.SelectedValue = "" Then
                SqlDataSource4.SelectParameters(0).DefaultValue = ListBox1.SelectedValue.ToString
            ElseIf ListBox2.SelectedValue <> "" Then
                SqlDataSource4.SelectParameters(0).DefaultValue = ListBox2.SelectedValue.ToString
            End If
        End If
    End Sub

succede che al parametro campo_focus di SqlDataSource4 non viene dato nessun valore
e non visualizzo nessun record del db.

Come ho sbagliato?
Modificato da Giovanni_3478 il 06 gennaio 2007 11.58 -
Devi impostare la proprità DataKeyNames altrimenti non riesci a referenziare la chiave.

Tutto qui.

Fabrizio Canevali
666 messaggi dal 10 febbraio 2006
Anche aggiungendo al detailsview DataKeyNames="nomeId"

il detailview non mi visualizza nulla
61 messaggi dal 29 ottobre 2006
Contributi
Ciao,

hai provato a fare il debug dell'applicazione e vedere se effettivamente ListBox1.SelectedValue o ListBox2.SelectedValue sono diversi dalla stringa vuota?

In caso contrario, la causa potrebbe essere il databinding delle due ListBox (che ad esempio, se fatto ad ogni caricamento della pagina, potrebbe resettare il valore selezionato).

Alessandro Gallo | ASP.NET AJAX Weblog | ASP.NET AJAX In Action
666 messaggi dal 10 febbraio 2006
In caso contrario, la causa potrebbe essere il databinding delle due ListBox (che ad esempio, se fatto ad ogni caricamento della pagina, potrebbe resettare il valore selezionato).

Come si potrebbe ovviare a questo problema?


nella aspxvb
ho provato a scrivere solo

SqlDataSource4.SelectParameters(0).DefaultValue = ListBox1.SelectedValue


Con il debug ho appurato che ListBox1.SelectedValue viene avvalorato
ma è come se non venisse assegnato a
SqlDataSource4.SelectParameters(0).DefaultValue

Se ad esempio sostituisco ListBox1.SelectedValue con il valore "chi siamo",
(SqlDataSource4.SelectParameters(0).DefaultValue = "chi siamo")
che è uno dei valori presenti in un record del db,
il detailsview mi visualizza i risultati;
se uso
SqlDataSource4.SelectParameters(0).DefaultValue = ListBox1.SelectedValue
e ListBox1.SelectedValue ha valore "chi siamo",
il detailsview non mi visualizza i risultati
Modificato da Giovanni_3478 il 07 gennaio 2007 14.22 -
perche non usi un ControlParameter?, fermo rimanendo il consiglio di fabrica di controllare che i dati dell DropDownList non siano ricaricati ad ogni PostBack

puoi farlo con


if(!IsPosBack)
{
//fai qualcosa
}



ciao marco

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

http://nostromo.spaces.live.com/default.aspx
666 messaggi dal 10 febbraio 2006
- non uso il control parameter
perchè data la select
SelectCommand="SELECT testo, id FROM content_categorie WHERE (campo_focus = @campo_focus)"



io voglio che

If ListBox1.SelectedValue <> "" And ListBox2.SelectedValue = "" Then
il valore di campo_focus dcovrà essere = ListBox1.SelectedValue
ElseIf ListBox1.SelectedValue = "" And ListBox2.SelectedValue <> "" Then
il valore di campo_focus dcovrà essere = ListBox2.SelectedValue
End If


Quindi il controlparameter assegna il valore della variabile scalare al valore di un controllo.
Io voglio che a una condizione dell'if
il valore della variabile scalare sarà uguale al valore di un cotrollo (il listbox1)
e a un'altra condizone dell'if
il valore della variabile scalare sarà uguale al valore di un altro cotrollo (il listbox2).




- la select attualmente è
SelectCommand="SELECT testo, id FROM content_categorie WHERE (campo_focus = @campo_focus)"


se aggiungessi 2 control parameter

<asp:ControlParameter Name="CPlistbox1" PropertyName="SelectedValue" ControlID="ListBox1"/>
<asp:ControlParameter Name="CPlistbox2" PropertyName="SelectedValue" ControlID="ListBox2"/>


Potrei dire
SelectCommand="SELECT testo, id FROM content_categorie WHERE

if @CPlistbox2= null
allora
campo_focus=@CPlistbox1

elseif @CPlistbox1= null
allora
campo_focus=@CPlistbox2


In sql come si traduce una cosa del genere?
61 messaggi dal 29 ottobre 2006
Contributi
Se ad esempio sostituisco ListBox1.SelectedValue con il valore "chi siamo",
(SqlDataSource4.SelectParameters(0).DefaultValue = "chi siamo")
che è uno dei valori presenti in un record del db,
il detailsview mi visualizza i risultati;
se uso
SqlDataSource4.SelectParameters(0).DefaultValue = ListBox1.SelectedValue
e ListBox1.SelectedValue ha valore "chi siamo",
il detailsview non mi visualizza i risultati


Questo è davvero strano, perchè fa pensare che ListBox1.SelectedValue venga riassegnato dopo l'evento Load della pagina.

Potresti controllare che valore ha Listbox1.SelectedValue durante l'evento PreRender?

Alessandro Gallo | ASP.NET AJAX Weblog | ASP.NET AJAX In Action

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.