Programming/.NET
LinqDataSource 컨트롤 생성시 설정마법사를 통해서도 어느정도의 데이터 필터링을 위한 기능을 제공하지만  QueryExtender 를 사용하면 좀더 다양한 방법으로 데이터 필터링을 수행할 수 있습니다.

QueryExtender 는 다중검색이나 데이터 검색범위, 콤마(,)를 통한 OrderBy 다중필드 처리를 수행할 수 있을 뿐만 아니라 사용자 정의 표현식의 적용도 가능합니다. 아래 표는 현재 사용할 수 있는 필터링 표현식 항목입니다.

 SearchExpression  문자열이나 검색이나 비교를 수행합니다.  특히 SearchType 속성을 사용하면 StartsWith, EndsWith, Contains 를 이용한 검색도 가능합니다. 
 RangeExpression  최소값과 최대값을 지정해 해당 범위의 값을 찾도록 합니다.
 OrderByExpression  데이터를 순차적으로 정렬합니다.
 CustomExpression  사용자 LINQ 표현식을 사용하여 필터링을 수행할 수 있도록 합니다.
 MethodExpression  사용자 LINQ 쿼리를 포함하는 메소드를 지정할 수 있도록 합니다.
 PropertyExpression  특정 컬럼의 속성을 필터링대상으로 처리합니다.
 OfTypeExpression  데이터 타입을 필터링대상으로

QueryExtender 는 IQueryableDataSource 인터페이스를 구현해 LinqDataSource 나 EntityDataSource 컨트롤등 데이터 소스 컨트롤하위에서 작동할 수 있습니다.
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="Webtest.DataClasses1DataContext" EntityTypeName="" Select="new (key as LastName, it as Persons, Sum(EmailPromotion) as Sum_EmailPromotion)" TableName="Persons" GroupBy="LastName" Where="BusinessEntityID <= 100"></asp:LinqDataSource>
<asp:QueryExtender ID="QueryExtender1" runat="server" TargetControlID="LinqDataSource1">
    <asp:SearchExpression DataFields="LastName">
        <asp:QueryStringParameter DefaultValue="Baker" />
    </asp:SearchExpression>
</asp:QueryExtender>
QueryExtender 사용시 필터링을 적용하기 위한 데이터소스컨트롤은 TargetControlID 로 지정하며 하위에 원하는 Expression Type을 추가하여 필터링을 적용합니다.
1 0