1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Adding Search Capabilities to Windows Forms docx

3 372 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Adding Search Capabilities To Windows Forms
Tác giả Team Lib
Trường học Not Available
Chuyên ngành Computer Science
Thể loại Document
Năm xuất bản Not Available
Thành phố Not Available
Định dạng
Số trang 3
Dung lượng 14,39 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Solution Use the Find method of the DataView with a sort key value to locate a record displayed in a DataGrid and reposition the row in the DataGrid.. A DataView is created based on th

Trang 1

[ Team LiB ]

Recipe 7.15 Adding Search Capabilities to Windows Forms

Problem

You need to use a search criteria specified by a user to locate a record displayed in a DataGrid without executing a query against the database

Solution

Use the Find( ) method of the DataView with a sort key value to locate a record displayed

in a DataGrid and reposition the row in the DataGrid

The sample code contains two event handlers:

Form.Load

Sets up the sample by creating a DataTable and filling it with the Customers table from the Northwind sample database A DataView is created based on the default view of the Customers DataTable, its sort key is set to the CustomerID column, and it is bound to the data grid on the form Finally, a CurrencyManager is created from the DataView

Go Button.Click

Uses the Find( ) method of the DataView to locate a record with the CustomerID specified by the user If the CustomerID is found, the CurrencyManager created in the Form.Load event handler is used to select the matching record in the data grid The C# code is shown in Example 7-31

Example 7-31 File: SearchDataGridForm.cs

// Namespaces, variables, and constants

using System;

using System.Configuration;

using System.Windows.Forms;

using System.Data;

using System.Data.SqlClient;

private DataView dv;

private CurrencyManager cm;

Trang 2

//

private void SearchDataGridForm_Load(object sender, System.EventArgs e) {

// Create the DataAdapter and load the Customers data in a table

String sqlText = "SELECT * FROM Customers";

SqlDataAdapter da = new SqlDataAdapter(sqlText,

ConfigurationSettings.AppSettings["Sql_ConnectString"]);

DataTable dt = new DataTable( );

da.Fill(dt);

// Create a view from the default view for the table

dv = dt.DefaultView;

dv.Sort = "CustomerID";

// Bind the view to the grid

findDataGrid.DataSource = dv;

// Get the CurrencyManager for the DataView

cm = (CurrencyManager)findDataGrid.BindingContext[dv];

}

private void findButton_Click(object sender, System.EventArgs e)

{

if(findTextBox.Text != "")

{

// Find the customer

int i = dv.Find(findTextBox.Text);

if(i < 0)

// A match was not found

MessageBox.Show("No matching records found.", "Find",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

else

// Reposition the grid record using the CurrencyManager

cm.Position = i;

}

else

{

MessageBox.Show("Enter find criteria.", "Find",

MessageBoxButtons.OK, MessageBoxIcon.Question);

findTextBox.Focus( );

}

Trang 3

}

Discussion

The Find( ) method of the DataView locates a row matching a specified sort key value The Sort property gets or sets the column or columns that the DataView is sorted on The Sort property is a string that contains the column name, or multiple column names

separated by commas, followed by an optional ASC or DESC clause specifying sort direction

There are two methods that you can use to locate records in a DataView:

Find( )

This method of the DataView returns the index of the first row matching the

specified sort key value or and array of sort key values, for sort keys based on multiple columns If no records match, it returns -1

FindRows( )

This method of the DataView returns an array of rows matching the specified sort key value or array of sort key values It returns an empty array if the sort key value does not exist

The Find( ) and FindRows( ) methods use the current index of the DataView without requiring the index to be rebuilt

Both methods take an argument that is an object array of values whose length matches the number of columns in the sort order of the DataView The order of columns in the array must match the order of columns specified in the Sort property A single value can

be passed instead of an array if the sort is based on a single column The sort key value must match exactly in order to return a result The RowFilter property can be used to locate records matching an expression For an example, see Recipe 3.1

The sort order must be specified either by setting the ApplyDefaultSort property of the DataView to true or by setting the Sort property explicitly; otherwise, an exception is thrown The case sensitivity of the search is controlled by the CaseSensitive property of the underlying DataTable

[ Team LiB ]

Ngày đăng: 14/12/2013, 18:16

TỪ KHÓA LIÊN QUAN

w