다음을 통해 공유


방법: SqlDataSource 컨트롤의 필터링을 사용하도록 설정

업데이트: 2007년 11월

SqlDataSource 컨트롤을 사용하면 쿼리를 다시 실행하지 않고도 쿼리 결과를 필터링(정렬 또는 선택)할 수 있습니다. SqlDataSource 컨트롤에 필터링을 추가하면 쿼리가 실행된 후 데이터베이스로 돌아가지 않고도 SqlDataSource를 통해 사용할 수 있는 데이터를 변경할 수 있습니다.

이 항목에서는 SqlDataSource 컨트롤의 필터링을 사용하기 위한 설정 방법을 보여 줍니다. GridView 컨트롤 같이 SqlDataSource 컨트롤에 데이터 바인딩된 컨트롤에서는 필터링된 결과만 보여 줍니다.

필터링을 사용하려면 SqlDataSource 컨트롤에서 데이터 집합의 정보를 반환한 다음 해당 결과를 캐싱하도록 설정해야 합니다. 이렇게 하면 RowFilter 속성으로 적용되는 필터 식을 SqlDataSource 컨트롤의 기본 DataView 개체로 지정할 수 있습니다.

필터에는 다른 컨트롤, 쿠키, 세션 변수 또는 쿼리 문자열을 기반으로 하는 매개 변수가 포함될 수 있습니다. 예를 들어, DropDownList 컨트롤에 도시 이름이 포함되어 있으면 DropDownList 컨트롤에서 선택된 도시를 필터링 매개 변수로 사용할 수 있습니다.

참고:

매개 변수를 사용하는 필터 식을 만드는 방법은 매개 변수가 있는 SelectCommand 속성을 만들고 SelectParameters 속성 값을 지정하는 방법과는 다릅니다. 매개 변수가 있는 필터는 캐시된 데이터 집합에 여러 가지 데이터 뷰를 적용합니다. 매개 변수가 있는 Select 명령은 데이터 소스에 대해 쿼리를 수행합니다.

SqlDataSource 컨트롤의 필터링을 사용하도록 설정하려면

  1. 유효한 연결 문자열과 Select 문을 사용하여 SqlDataSource 컨트롤을 만듭니다. 자세한 내용은 방법: SqlDataSource 컨트롤을 사용하여 SQL Server 데이터베이스에 연결(Visual Studio)을 참조하십시오.

  2. SqlDataSource 컨트롤의 DataSourceMode 속성을 DataSet로 설정합니다.

  3. SqlDataSource 컨트롤의 EnableCaching 속성을 true로 설정합니다.

    필터링을 지원하려면 쿼리에서 반환된 데이터를 캐싱해야 합니다.

  4. SqlDataSource 컨트롤의 CacheDuration 속성을 데이터를 캐싱할 시간(초)으로 설정합니다. 응용 프로그램에 따라 적절한 값을 선택합니다.

  5. 다음 예제처럼 컨트롤의 FilterExpression 속성을 반환할 데이터를 지정하는 식으로 설정합니다.

    country = 'Germany'
    

    필터 식 구문에 대한 자세한 내용은 RowFilter를 참조하십시오.

    필터링을 사용하도록 설정된 SqlDataSource 컨트롤은 다음과 같은 형태가 됩니다.

    <asp:SqlDataSource 
        ID="SqlDataSource1" 
        DataSourceMode="DataSet"
        EnableCaching="true"
        Runat="server" 
        SelectCommand="Select * From Customers"
        ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        FilterExpression="country = 'Germany'">
    </asp:SqlDataSource>
    

    데이터베이스에 대해 Select 명령이 실행되면 이 SqlDataSource 컨트롤에 바인딩된 컨트롤은 필터링된 결과만 표시합니다.

매개 변수를 사용한 필터링

런타임에만 알 수 있는 값을 기준으로 쿼리 결과를 필터링해야 하는 경우가 종종 있습니다. 이런 경우 매개 변수 자리 표시자가 포함된 필터 식을 만든 다음 필터 매개 변수를 정의하여 자리 표시자를 채울 수 있습니다. 필터 매개 변수는 컨트롤, 쿼리 문자열, 쿠키, 세션 변수, 프로필 속성 또는 Form 속성 값에서 매개 변수 값을 가져올 수 있습니다.

매개 변수를 사용하여 SqlDataSource 컨트롤을 필터링하려면

  1. SqlDataSource 컨트롤의 FilterExpression 속성을 필터 매개 변수 값의 자리 표시자가 포함된 식으로 설정합니다. 자리 표시자에는 {n} 구문을 사용합니다. 여기서 n은 매개 변수의 순서를 나타냅니다.

    다음 예제에서는 매개 변수가 있는 필터 식을 보여 줍니다. 두 번째 필터 식에는 매개 변수 자리 표시자가 여러 개 포함되어 있습니다.

    FilterExpression="category = '{0}'"
    FilterExpression="country = '{0}' AND city = '{1}'"
    
  2. FilterParameters 요소를 SqlDataSource 요소의 자식으로 만듭니다. 각 필터 매개 변수 자리 표시자에 대해 다음 중 한 형식의 요소를 추가합니다.

    다음 예제에서는 DropDownList 컨트롤에서 값을 가져오는 필터 매개 변수를 만드는 방법을 보여 줍니다.

    <FilterParameters>
      <asp:ControlParameter
       Name="CategoryList" ControlID="DropDownList1" 
       PropertyValue="SelectedValue" />
    </FilterParameters>
    
    참고:

    매개 변수의 Name 속성은 필수 속성입니다. 그러나 매개 변수는 이름이 아니라 순서에 따라 자리 표시자와 대응합니다.

    다음 예제에서는 매개 변수가 있는 필터를 사용하는 완전한 SqlDataSource 컨트롤을 보여 줍니다.

    <asp:SqlDataSource 
      ID="SqlDataSource1" 
      EnableCaching="true"
      DataSourceMode="DataSet"
      Runat="server" 
      SelectCommand="Select * from Customers"
      ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>"
      FilterExpression="country = '{0}'">
      <FilterParameters>    <asp:ControlParameter      Name="countryparam"      ControlID="DropDownList1"      PropertyName="SelectedValue" />  </FilterParameters>
    </asp:SqlDataSource>
    

참고 항목

개념

데이터 소스 컨트롤을 사용하여 데이터 캐싱