PHẦN 3: CÁCH NAVIGATE DATA
TRONG WINDOW FORMS
Trong ứng dụng window, cách dễ nhất để duyệt qua các
record trong dât source là kết nối một BindingSource componnet với một datasource
và sau đó bind control vào Binding Source. Sau đó bạn có thể sử dụng các phương
thức trên Binding source như MoveNext, MoveLast, MovePrevious và MoveFirst. Sử
dụng các method này sẽ điều chỉnh thuộc tính Position và Current của BindingSource
một cách tự động. Bạn có thể tìm những item và đặt chúng là item hiện tại, bằng
cách setting thuộc tính Position.
Để tăng vị trí Position trong datasource
- Set thuộc tính position của BindingSource cho data của
bạn thành record mà bạn muốn đi tới
Lưu ý là khi set thuộc tính Position thành một giá trị
vượt ngoài record cuối cùng sẽ không gây ra một lỗi, bởi .Net framework cho phép
bạn set vị trí nằm ngoài bounding list. Nếu quan trọng cho ứng dụng của bạn để
biết được rằng bạn đã đi quá record đầu tiên hay cuối cùng hay không, chèn thêm
một lệnh logical test mỗi khi bạn thi hành.
MoveNext() có thể khiến position đi quá vị trí cuối cùng
Kiểm tra khi bạn đi quá vị trí cuối cùng hoặc đầu tiên
- Thêm một event handler cho event PositionChanged
Void customersBindingSource_PositionChanged(object
sender, EventArgs e)
{
If (customersBindingSource.Position
== customersBindingSource.Count -1)
nextButton.Enabled
= false;
else
nextButton.Enabled
= true;
}
Tìm kiếm một item và set nó là item hiện tại
- Để tìm một record mà bạn muốn set làm item hiện tại,
bạn có thể sử dụng phương thức Find() của BindingSource, datasource của bạn được
cài đặt bằng IBindingList.
Một số ví dụ của data source cài đặt IBindingList là
BingingList<T> và DataView
Void findButton_Click (object sender, EventArgs e)
{
Int foundIndex
= customersBindingSource.Find(“CustomerID”, “Action”);
customersBindingSource.Position
= foundIndex;
}
Về method Find()
Find(PropertyDescriptor, Object)
Tìm kiếm index của một item có mô tả của property
Private void button1_Click(object sender, EventArgs e)
{
If (binding1.SupportsSearching
!= true)
MessageBox.Show(“Không
thể tìm kiếm do không hỗ trợ!”);
Else
{
Int
foundIndex = binding1.Find(“Name”, textBox1.Text);
If
(foundIndex> -1) listBox1.SelectedIndex = foundIndex;
Else
MessageBox.Show(“Không
tìm thấy mục ” + textBox1.Text);
}
}