25 messaggi dal 21 novembre 2005
Salve a tutti

Come da oggetto il mio problema è come filtrare i dati in una GridView che utilizza un ObjectDataSource.
Il filtro dovrebbe funzionare per una DropDownList con i campi della GridView e un TextBox per inserire il testo ed il classico Button Search.
Utilizzare questi due parametri per filtrare i dati ma ci sono diversi problemi nell'utilizzo di bisiness method che ritornano List<MyObject>...

Ciao e grazie in anticipo...
prima di tutto è necessario capire se il metodo associato al ObjectDataSource accettadei parametri per eseguire il filtro.

posta un pò di codice e qualche altro dettaglio

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
25 messaggi dal 21 novembre 2005
Ciao marco

Ecco un po di codice:
Filtra per:
<asp:DropDownList ID="ddlFiltro" runat="server" SkinID="ddlSmall">
<asp:ListItem Text="Cognome" Value="Cognome" Selected="True">
</asp:ListItem>
        <asp:ListItem Text="Nome" Value="Nome"></asp:ListItem>
<asp:ListItem Text="Organizzazione" Value="Organizzazione"></asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="tbFiltro" runat="server" SkinID="tbSmall"></asp:TextBox>
<asp:Button ID="btFiltro" runat="server" Text="Filtra" OnClick="btFiltro_Click"/>
<asp:GridView ID="gvUtenti" runat="server" DataSourceID="odsGridView" DataKeyNames="CodUtente" CellPadding="4" AutoGenerateColumns="False" AllowPaging="True" PageSize="15" AllowSorting="True">
<Columns>
<asp:BoundField DataField="Cognome" HeaderText="Cognome" SortExpression="Cognome" />
<asp:BoundField DataField="Nome" HeaderText="Nome" SortExpression="Nome" />
<asp:BoundField DataField="Organizzazione" HeaderText="Organizzazione" SortExpression="Organizzazione" />
            .....
</Columns>
        
</asp:GridView>
<asp:ObjectDataSource ID="odsGridView" runat="server"  DeleteMethod="DeleteUtente" TypeName="Business.UtenteManager" 
SortParameterName="Sort" SelectMethod="GetUtenti"
OldValuesParameterFormatString="{0}"
 FilterExpression="{0} LIKE '%{1}%'">
<DeleteParameters>
  <asp:Parameter Name="CodUtente" Type="Int32" />
</DeleteParameters>
<FilterParameters>
<asp:ControlParameter ControlID="ddlFiltro"  Name="Campo" PropertyName="Text" Type="String" /> 
<asp:ControlParameter ControlID="tbFiltro"  Name="Valore" PropertyName="Text" Type="String" />
</FilterParameters>
</asp:ObjectDataSource>


Mentre il metodo di business è:

public UtenteCollection GetUtenti(string Campo, string Valore, string Sort)
{
            UtenteCollection coll = null;
            if (!Campo.Equals(string.Empty) && !Valore.Equals(string.Empty))
                coll = (UtenteCollection)_dataMapper.Read(Campo, Valore);
            else
                coll = (UtenteCollection)_dataMapper.Read(Campo, Valore);
            //Sort
            return coll;
}

public UtenteCollection GetUtenti(string Sort)
{
//Sort
}


Se imposto la proprieta FilterExpression questo mi chiama il metodo con tre parametri ma si arrabbia di brutto:
L'origine dati 'odsGridView' supporta le operazioni di filtro solo quando SelectMethod restituisce un DataSet o un DataTable.

Questa prova è stata l'unica che ha chiamato questo metodo...

Ciao e grazie
asp.net è stato chiarissimo, non puoi usare FilterExpression nel tuo particolare contesto

piuttosto imposta dei SelectParameter

usando i ControlParameter

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

http://nostromo.spaces.live.com/default.aspx
25 messaggi dal 21 novembre 2005
Si è stata proprio la prova che ho fatto dopo aver postato il messaggio ne avevo fatte di prove.
Comunque è sempre il metodo GetUtenti viene chiamato quindi....che stupido....
niente di difficile anzi, ma vedendo le proprietà FilterPatameters e FilterExpression non riuscivo a rendermi conto della semplicità dell'operazione....

Grazie mille per l'aiuto
di nulla

FilterExpression come dice il messaggio d'errore è "buono" solo per sorgenti dati come DataTable ecc ecc

ciao marco

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.