23 messaggi dal 04 settembre 2008
Salve a tutti,

ho una GridView con i seguenti valori

ID | Utente | Gruppo | Locazione
1 | Pippo | Windows | Casa
2 | Pluto | Linux | Ufficio
3 | Paperino | Windows | NULL

Ho poi una DropDrownList con i seguenti valori:

Casa
Ufficio

Vorrei che:

All'apertura della pagina vengano visualizzati tutti i records (compreso Paperino che ha il campo Locazione = NULL)

ed inoltre vorrei che:


quando scelgo dalla DropDrownList il valore Casa deve mostrare solo Pippo

quando scelgo dalla DropDrownList il valore Ufficio deve mostrare solo Pluto

Semplice NO?

Per fare questo ho aggiunto un ListItem alla DropDownList valorizzato come '%'

Il problema è che quando la pagina viene avviata, la DropDownList viene valorizzata giustamente con '%', ma la GridView riempita solo con Pippo e Pluto. Praticamente '%' non estrae Paperino perchè ha NULL nel campo.

A me invece interessa estrarre TUTTI i records!


Il codice è il seguente:


<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Pagina senza titolo</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <br />
        <br />
        <br />
        <br />
        <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" 
            AutoPostBack="True" DataSourceID="AccessDataSourceLocazione" 
            DataTextField="Locazione" DataValueField="IDLocazione" 
            style="z-index: 1; left: 24px; top: 79px; position: absolute">
            <asp:ListItem Value="%">All</asp:ListItem>
        </asp:DropDownList>
        <asp:AccessDataSource ID="AccessDataSourceLocazione" runat="server" 
            DataFile="~/App_Data/test.mdb" 
            SelectCommand="SELECT [IDLocazione], [Locazione] FROM [Locazione]">
        </asp:AccessDataSource>
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="IDUtente" DataSourceID="AccessDataSourceGrid" 
            style="z-index: 1; left: 19px; top: 135px; position: absolute; height: 133px; width: 187px">
            <Columns>
                <asp:BoundField DataField="IDUtente" HeaderText="IDUtente" 
                    InsertVisible="False" ReadOnly="True" SortExpression="IDUtente" />
                <asp:BoundField DataField="Utente" HeaderText="Utente" 
                    SortExpression="Utente" />
                <asp:BoundField DataField="IDGruppo" HeaderText="IDGruppo" 
                    SortExpression="IDGruppo" />
                <asp:BoundField DataField="IDLocazione" HeaderText="IDLocazione" 
                    SortExpression="IDLocazione" />
            </Columns>
        </asp:GridView>
    
    </div>
    <asp:AccessDataSource ID="AccessDataSourceGrid" runat="server" 
        DataFile="~/App_Data/test.mdb" SelectCommand="SELECT [IDUtente], [Utente], [IDGruppo], [IDLocazione] FROM [Utente]
WHERE [IDLocazione] LIKE @DropDownList1">
        <SelectParameters>
            <asp:ControlParameter ControlID="DropDownList1" Name="DropDownList1" 
                PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:AccessDataSource>
    </form>
    <p>
        &nbsp;</p>
</body>
</html>




Qualche lume?

Grazie

Ciao
Gestisci l'evento Select dell'AccessDataSource controlli il valore dell DropDownList e domifichi la query di conseguenza

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
23 messaggi dal 04 settembre 2008
Grazie per la risposta Marco, anche se fugace.
Potresti darmi ulteriori dettagli?
Non sono molto pratico di asp...

Ciao
Umh vedendo velocemente il codice non farei mai delle query all'interno del codice userei una buona logica MVC, potresti popolare la dropdown list prelevando i valori che ti servono da una data table:
drp.DataSource = DataTable
drp.DataBind();

Corso SEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
Forex
Ah null è un valore che non piace molto a sql, mettici 0 o qualsiasi altro valore vedrai che molti problemi si risolvono

Corso SEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
Forex
23 messaggi dal 04 settembre 2008
scusa ma non centra molto con la mia domanda come popolo la DropDownList
Il problema è che la GridView non mi visualizza i record che hanno dei NULL.
Ciao
si infatti ho avevo capito male, a riguardo ti posso dire che proprio oggi ho avuto lo stesso problema con un select su campo del database che aveva valore null, io ho risolto forzando in fase di inserimento un valore (0) quando nessun valore per quel campo era presente. Non è la strada migliore ma per quello che dovevo fare ha funzionato

Corso SEO
Libro SEO, SEM e Web Marketing
Siti Web Parma
Forex
allora gestisci l'evento Selecting dell'AccessDataSource, il metodo deve rispettare la firma del delegato SqlDataSourceSelectingEventHandler , quindi riceve due parametri il classico sender e un istanza dell'oggetto SqlDataSourceSelectingEventArgs.

attraverso la proprietà command di quest'ultimo puoi accedere ad ogni aspetto del comando, compresa la query, controlli con un semplice

if(MyDrop.SelectedValue = "valore")
{
//imposto una query
}
else
{
//ne imposto un altra
}

se hai altre domande non esitare, scusa se sono un pò di fretta

ciao marco
Modificato da nostromo il 04 settembre 2008 17.09 -

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

http://nostromo.spaces.live.com/default.aspx

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.