CodeSmith Community
Your Code. Your Way. Faster!

Multiple filters on typed datasource

Latest post 05-10-2007 9:37 AM by FabulousFabian. 2 replies.
  • 05-10-2007 2:19 AM

    Multiple filters on typed datasource

    Hi,

    I have a webpage with a grid on it. This grid is bound to a typed datasource. I want to be able to search on a number of properties on this datasource (using an 'OR'-like query), but the results returned must belong to the currently logged on user (so, an 'AND'-query like 'AND ownerid = ....'). In SQL this query would look like 'SELECT ...... WHERE ownerid = 1 AND (name like '%something%' OR value like '%something%'). Can this be achieved using typed datasources and filters?

    Currently my code looks like this:

    <data:VDossierDataSource SelectMethod="getpaged" runat="server" ID="DSDossiers" EnablePaging="true" EnableSorting="true">

    <Parameters>

    <data:SqlParameter Name="WhereClause" UseParameterizedFilters="false">

    <Filters>

    <data:VDossierFilter Column="opdrachtgeverid" ControlID="__Page" PropertyName="OpdrachtgeverID"

    ComparisionType="Equals" />

    </Filters>

    </data:SqlParameter>

    </Parameters>

    </data:VDossierDataSource>

     

    Regards,

    Fabian

    • Post Points: 35
  • 05-10-2007 9:34 AM In reply to

    • mike123
    • Top 10 Contributor
    • Joined on 02-25-2005
    • Toronto, Ontario
    • Posts 726
    • Points 16,880

    Re: Multiple filters on typed datasource

    ...

    'SELECT ...... WHERE ownerid = 1 AND (name like '%something%' OR value like '%something%').

    ... 

    Fabian,

    The support for grouping has been checked-in (rev. 558)

    Try this:

    <data:VDossierDataSource SelectMethod="getpaged" runat="server" ID="DSDossiers" EnablePaging="true" EnableSorting="true">
        <Parameters>
            <data:SqlParameter Name="WhereClause" UseParameterizedFilters="false">
                <Filters>
                    <data:VDossierExpressionBuilder Column="opdrachtgeverid" ControlID="__Page" PropertyName="OpdrachtgeverID" BuilderExpression="AppendEquals" />
                    <data:VDossierExpressionBuilder Column="name" DefaultValue="somevalue" BuilderExpression="Append" Format="%{0}%" GroupState="AndBegin" Junction="" />
                    <data:VDossierExpressionBuilder Column="value" DefaultValue="somevalue" BuilderExpression="Append" Format="%{0}%" GroupState="End" Junction="OR" />               
                </Filters>
            </data:SqlParameter>
        </Parameters>
    </data:VDossierDataSource>

    which is equivalent to this:

    VDossierExpressionBuilder searchQuery = new VDossierExpressionBuilder();
    searchQuery.AppendEquals(VDossierColumn.opdrachtgeverid, "1");
    searchQuery.BeginGroup("AND");
    searchQuery.Append("", VDossierColumn.name, String.Format("%{0}%", "somevalue"));
    searchQuery.Append("OR", VDossierColumn.value, String.Format("%{0}%", "somevalue"));
    searchQuery.EndGroup();

     

    Mike Shatny
    --------------------------------------------------------------
    Member of the .netTiers team http://www.nettiers.com
    --------------------------------------------------------------

    • Post Points: 35
  • 05-10-2007 9:37 AM In reply to

    Re: Multiple filters on typed datasource

    Thanks! I'm going to try that. Let you know if it worked.
    • Post Points: 5
Page 1 of 1 (3 items) | RSS
Copyright © 2008 CodeSmith Tools, LLC
Powered by Community Server (Commercial Edition), by Telligent Systems