방법: Windows Forms BindingSource 구성 요소를 사용하여 ADO.NET 데이터 정렬 및 필터링
업데이트: 2007년 11월
Sort 및 Filter 속성을 통해 BindingSource 컨트롤의 정렬 및 필터링 기능을 노출할 수 있습니다. 내부 데이터 소스가 IBindingList일 때는 간단한 정렬을 적용하고 데이터 소스가 IBindingListView일 때는 고급 정렬 및 필터링을 적용할 수 있습니다. Sort 속성에는 표준 ADO.NET 구문이 필요합니다. 이 구문에서는 데이터 소스의 데이터 열 이름을 나타내는 문자열 뒤에 ASC 또는 DESC를 사용하여 목록을 오름차순으로 정렬할지 아니면 내림차순으로 정렬할지를 나타냅니다. 쉼표 구분 기호로 각 열을 구분하여 고급 정렬 또는 여러 열 정렬을 설정할 수 있습니다. Filter 속성에는 문자열 식을 사용합니다.
참고: |
---|
연결 문자열에 중요한 정보(예: 암호)를 저장하면 응용 프로그램 보안 문제가 발생할 수 있습니다. 데이터베이스 액세스를 제어할 경우에는 통합 보안이라고도 하는 Windows 인증을 사용하는 방법이 더 안전합니다. 자세한 내용은 연결 정보 보호(ADO.NET)를 참조하십시오. |
BindingSource를 사용하여 데이터를 필터링하려면
Filter 속성을 원하는 식으로 설정합니다.
다음 코드 예제에서는 열 이름과 해당 열에 사용할 값으로 식이 구성됩니다.
BindingSource1.Filter = "ContactTitle='Owner'"
BindingSource1.Filter = "ContactTitle='Owner'";
BindingSource를 사용하여 데이터를 정렬하려면
열 이름 뒤에 오름차순인지 내림차순인지 나타내는 ASC 또는 DESC가 오도록 Sort 속성을 설정합니다.
열을 여러 개 사용할 때는 쉼표로 각각 구분합니다.
BindingSource1.Sort = "Country DESC, Address ASC"
BindingSource1.Sort = "Country DESC, Address ASC";
예제
다음 코드 예제에서는 Northwind 샘플 데이터베이스의 Customers 테이블의 데이터를 DataGridView 컨트롤에 로드하고 표시되는 데이터를 필터링 및 정렬합니다.
Private Sub InitializeSortedFilteredBindingSource()
' Create the connection string, data adapter and data table.
Dim connectionString As New SqlConnection("Initial Catalog=Northwind;" & _
"Data Source=localhost;Integrated Security=SSPI;")
Dim customersTableAdapter As New SqlDataAdapter("Select * from Customers", _
connectionString)
Dim customerTable As New DataTable()
' Fill the the adapter with the contents of the customer table.
customersTableAdapter.Fill(customerTable)
' Set data source for BindingSource1.
BindingSource1.DataSource = customerTable
' Filter the items to show contacts who are owners.
BindingSource1.Filter = "ContactTitle='Owner'"
' Sort the items on the company name in descending order.
BindingSource1.Sort = "Country DESC, Address ASC"
' Set the data source for dataGridView1 to BindingSource1.
dataGridView1.DataSource = BindingSource1
End Sub
private void InitializeSortedFilteredBindingSource()
{
// Create the connection string, data adapter and data table.
SqlConnection connectionString =
new SqlConnection("Initial Catalog=Northwind;" +
"Data Source=localhost;Integrated Security=SSPI;");
SqlDataAdapter customersTableAdapter =
new SqlDataAdapter("Select * from Customers", connectionString);
DataTable customerTable = new DataTable();
// Fill the the adapter with the contents of the customer table.
customersTableAdapter.Fill(customerTable);
// Set data source for BindingSource1.
BindingSource1.DataSource = customerTable;
// Filter the items to show contacts who are owners.
BindingSource1.Filter = "ContactTitle='Owner'";
// Sort the items on the company name in descending order.
BindingSource1.Sort = "Country DESC, Address ASC";
// Set the data source for dataGridView1 to BindingSource1.
dataGridView1.DataSource = BindingSource1;
}
코드 컴파일
이 예제를 실행하려면 이름이 BindingSource1인 BindingSource와 이름이 dataGridView1인 DataGridView가 들어 있는 폼에 코드를 붙여넣습니다. 폼에 대한 Load 이벤트를 처리하고 load 이벤트 처리기 메서드에서 InitializeSortedFilteredBindingSource를 호출합니다.