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