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

  1. 디자인 뷰로 전환한 후 도구 상자의 데이터 탭에서 SqlDataSource 컨트롤을 페이지로 끌어 옵니다.

  2. 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그 표시를 클릭합니다.

  3. SqlDataSource 작업 메뉴에서 데이터 소스 구성을 클릭합니다.

  4. 데이터 소스 구성 마법사의 지시에 따라 연결을 만들거나 선택하고 데이터 소스에서 데이터를 반환할 쿼리를 만듭니다. 자세한 내용은 연습: 웹 페이지의 기본 데이터 액세스를 참조하십시오.

  5. 속성 창에서 DataSourceMode 속성을 DataSet으로 설정합니다.

  6. EnableCaching 속성을 true로 설정합니다.

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

  8. FilterExpression 속성을 다음 예제 식과 같이 반환할 데이터를 지정하는 식으로 설정합니다.

검색예제)
city = 'Seattle'
----------------------------------------------------------------------------------------

초간단 SqlDataSource  데이터검색방법

그리드뷰와 SqlDataSource 연결되어져있다는 가정하에

버튼을 눌러서 검색 숨긴코드에서 처리방법

    protected void Button1_Click(object sender, EventArgs e)
    {
        this.SqlDataSource1.FilterExpression = "m_id = '{0}' ";
        this.SqlDataSource1.FilterParameters.Add("m_id", "kojaedoo");
    }

또는

        this.SqlDataSource1.FilterExpression = "m_id = 'kojaedoo' ";

         //라이크로 검색하기

        //this.SqlDataSource1.FilterExpression = "k_name LIKE '%{0}%' ";
        //this.SqlDataSource1.FilterParameters.Add("k_name", "박");

예제

다음 코드 예제에서는 Northwind 데이터베이스에서 데이터를 검색하고 FilterExpressionFilterParameters 속성을 사용하여 이 데이터를 필터링하는 방법을 보여 줍니다.

SqlDataSource 컨트롤의 FilterExpression 속성은 Select 메서드를 실행하여 데이터를 검색할 때마다 적용됩니다.

이 예제에서는 FilterParameters 컬렉션에 들어 있는 필터 매개 변수의 자리 표시자가 FilterExpression 속성에 있습니다.

또한 필터 매개 변수는 DropDownList 컨트롤의 SelectedValue 속성에 바인딩된 ControlParameter 개체입니다.

DropDownList 컨트롤의 AutoPostBack 속성이 true로 설정되어 있기 때문에 DropDownList 선택을 변경하면 페이지에서는 정보를 서버에 다시 게시하고 GridView 컨트롤은 새 필터를 사용하여 데이터 소스 컨트롤에 다시 바인딩됩니다.

<HTML>
    <BODY>
        <FORM runat="server">
            <p>Show all employees with the following title:
            <asp:DropDownList
                id="DropDownList1"
                runat="server"
                AutoPostBack="True">
                <asp:ListItem Selected>Sales Representative</asp:ListItem>
                <asp:ListItem>Sales Manager</asp:ListItem>
                <asp:ListItem>Vice President, Sales</asp:ListItem>
            </asp:DropDownList></p>
            <asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
                SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"
                FilterExpression="Title='{0}'">
                <FilterParameters>
                    <asp:ControlParameter Name="Title" ControlId="DropDownList1" PropertyName="SelectedValue"/>
                </FilterParameters>
            </asp:SqlDataSource>
            <p>

<asp:GridView
                id="GridView1"
                runat="server"
                DataSourceID="SqlDataSource1"
                AutoGenerateColumns="False">
                <columns>
                    <asp:BoundField Visible="False" DataField="EmployeeID" />
                    <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                    <asp:BoundField HeaderText="Last Name" DataField="LastName" />
                </columns>
            </asp:GridView>
        </FORM>
    </BODY>
</HTML>

자주쓰는 텍스트 박스 검색방법

코드 예제는 TextBox 컨트롤, GridView 컨트롤, ObjectDataSource 컨트롤 및 전송 단추로 구성됩니다. 기본적으로 TextBox는 Northwind Traders 직원 중 한 명의 이름으로 채워집니다. GridViewTextBox의 이름으로 식별된 직원에 대한 정보를 표시합니다. 다른 직원에 대한 데이터를 검색하려면 해당 직원의 전체 이름을 TextBox에 입력하고 전송 단추를 클릭합니다.

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<script runat="server">

    protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
    {
        if (Textbox1.Text == "")
        {
            e.ParameterValues.Clear();
            e.ParameterValues.Add("FullName", "Nancy Davolio");
        }
    }
</script>

<html>
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <p>Show all users with the following name.</p>

        <asp:textbox id="Textbox1" runat="server" text="Nancy Davolio" />

        <asp:gridview
          id="GridView1"
          runat="server"
          datasourceid="ObjectDataSource1"
          autogeneratecolumns="False">
          <columns>
            <asp:boundfield headertext="ID" datafield="EmpID" />
            <asp:boundfield headertext="Name" datafield="FullName" />
            <asp:boundfield headertext="Street Address" datafield="Address" />
          </columns>
        </asp:gridview>

        <!-- Security Note: The ObjectDataSource uses a FormParameter,
             Security Note: which does not perform validation of input from the client. -->

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployeesAsDataSet"
          typename="Samples.AspNet.CS.EmployeeLogic"
          filterexpression="FullName='{0}'" OnFiltering="ObjectDataSource1_Filtering">
            <filterparameters>
              <asp:formparameter name="FullName" formfield="Textbox1" defaultvalue="Nancy Davolio" />
            </filterparameters>
        </asp:objectdatasource>

        <p><asp:button id="Button1" runat="server" text="Search" /></p>

    </form>
  </body>
</html>

+ Recent posts