Cấp bậc tác giả:

DOTNET

Tìm kiếm trong danh mục (C#)

Được viết bởi QuangIT ngày 31/07/2012 lúc 11:21 AM
Khi viết các phần mềm, thường chúng ta phải sử dụng danh mục. Tùy theo mục đích mà bạn có thể chọn control phù hợp.
  • 0
  • 11964
Tải tệp tin: Click ở đây

Tìm kiếm trong danh mục (C#)

Tìm kiếm trong danh mục

Khi viết các phần mềm, thường chúng ta phải sử dụng danh mục. Tùy theo mục đích mà bạn có thể chọn control phù hợp.

Trong một số trường hợp, các control có sẵn phù hợp với ý đồ của mình. Nhưng có những lúc, sử dụng control có sẵn thật nhàm chán và hiệu quả không cao.

Với những mắc mớ đã gặp, tôi đã tự tạo cho mình một UserControl khá ưng ý, chia sẻ cùng các bạn, mong rằng nó sẽ có ích đối với một hay một số người nào đó .

Vì thời gian không có nhiều nên tôi chỉ giới thiệu sơ qua phần sử dụng (sẽ đủ tỉ mỉ để những người mới tập tành có thể ứng dụng ) còn phần sưu liệu tôi sẽ cố gắng làm vô một lúc nào đó. Tuy nhiên tôi vẫn đưa cả mã nguồn cho các bạn nghiên cứu và phát triển theo hướng của bạn.

Các thành phần của UserControl

- DataGridView(dgbCataLog): Dùng để hiển thị danh mục

- TextBox(txbma): Đây chỉ là một biến, không khai báo đối tượng, Trong dự án nó sẽ chỉ đến TextBox để nhập mã của 1 thành phần trong danh mục.

- TextBox(txbTen): như txbMa, nhưng chỉ đến "TextBox Tên"

các thành phần này tạo nên control có tên CatalogSearchBoxs. Các bạn thông cảm, Một phần vì hơi sinh sính đồ ngoại một phần vì đang cày bừa tiếng Anh nên đặt tên Tây Tây tý cho máu .

Ngoài những "ốc vít" ở trên thì trong userControl ni còn có một thành phần rất quan trọng là bảng chứa những dữ liệu cần tìm kiếm DataTable(tbSource). Và một số hàm thiết đặt các giá trị cho userControl:

publicvoid MSetCatalog(DataTable vtbSource, string vstrMa, string vstrTen, TextBox vtxbMa, TextBox vtxbTen, bool vbTimTheoMa)

{
(...)
}

vtbSource: cái bảng bạn cần tìm kiếm trong đó.

vstrMa và vstrTen: trong bảng bạn cần phải có ít nhất 2 cột và một cột là mục khóa chính, khi bạn gọi hàn thì gán biến vstrMa trùng với tên cột ni. tương ứng với biết vstrTen là cột là tên của sản phẩm (hay cấy chi đó, qua ví dụ bạn sẽ rõ hơn). vtxbMa và vtxbTen tương ứng với txbMa và txbTen đạ nói ở trên. Khi bạn đang tìm ở ô mã thì gán cho biến vvTimTheoMa bằng true, Nếu tìm theo tên thì là false.

Ngoài ra còn một số hàm nạp chồng của hàm trên, bạn có thể mở rộng thêm tùy ý.

Sử dụng

Bạn thiết kế giao diện như thế này:

1.png
Thêm một quả Dataset như hình dưới:

2.png
Bạn cần thêm userControl của bạn vô dự án:

Vô Project ---> Add Reference...

Sau đó:

3.png
Chọn CatalogSearchBoxs.dll và nhấn OK

Bạn khai báo biến: 

CatalogSearchBoxs.CatalogSearchBox ctlSearch
là biến toàn cục của frmMain. Trong hàn khởi tạo của frmMain bạn làm như sau:public

frmMain()
{
ctlSearch = new CatalogSearchBoxs.CatalogSearchBox(); 
this.Controls.Add(ctlSearch);
InitializeComponent();
}

Phải add ctlSearch trước để nó luôn nổi lên trên cùng so với các control khác.

Bây giờ bạn tạo danh mục tình kiếm (Thường thì bạn lấy trong database, nhưng để cho gọn tôi tạo luôn trên project cho tiện)
private void mKhoiTaoDanhMuc()
{


dtsXeCo = newDataSetXeCo();

DataRow dtrAdd;

dtrAdd = dtsXeCo.XeCo.NewXeCoRow();

dtrAdd["Ma"] = "01";

dtrAdd["Ten"] = "Xe p";

dtsXeCo.XeCo.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.XeCo.NewXeCoRow();

dtrAdd["Ma"] = "02";

dtrAdd["Ten"] = "Xch l";

dtsXeCo.XeCo.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.XeCo.NewXeCoRow();

dtrAdd["Ma"] = "03";

dtrAdd["Ten"] = "Xe my";

dtsXeCo.XeCo.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.XeCo.NewXeCoRow();

dtrAdd["Ma"] = "04";

dtrAdd["Ten"] = "t";

dtsXeCo.XeCo.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.XeCo.NewXeCoRow();

dtrAdd["Ma"] = "05";

dtrAdd["Ten"] = "My bay";

dtsXeCo.XeCo.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.XeCo.NewXeCoRow();

dtrAdd["Ma"] = "06";

dtrAdd["Ten"] = "Tu ha";

dtsXeCo.XeCo.Rows.Add(dtrAdd);

dtsXeCo.XeCo.AcceptChanges();

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "001";

dtrAdd["TenTaiXe"] = "A lng X ";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "002";

dtrAdd["TenTaiXe"] = "V tng";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "003";

dtrAdd["TenTaiXe"] = "Lm Sung";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "004";

dtrAdd["TenTaiXe"] = "Tiu ci";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "005";

dtrAdd["TenTaiXe"] = "Gia Gia Ct Lng";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "006";

dtrAdd["TenTaiXe"] = "Chu du";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "007";

dtrAdd["TenTaiXe"] = "Thy Kiu";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "008";

dtrAdd["TenTaiXe"] = "Thy vn";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtrAdd = dtsXeCo.TaiXe.NewTaiXeRow();

dtrAdd["MaTaiXe"] = "009";

dtrAdd["TenTaiXe"] = "Madona";

dtsXeCo.TaiXe.Rows.Add(dtrAdd);

dtsXeCo.TaiXe.AcceptChanges();

}

[/CODE]Bạn gọi hàm ni khi Load from.

Trong sự kiện Enter của mỗi textBox bạn cần cài đặt cho Control của bạn:

private void txbXeCoMa_Enter(object sender, EventArgs e)
{
ctlSearch.MSetCatalog(dtsXeCo.XeCo, "Ma", "Ten", txbXeCoMa, txbXeCoTen, true, 200);
}
privatevoid txbXeCoTen_Enter(object sender, EventArgs e)
{
ctlSearch.MSetCatalog(dtsXeCo.XeCo, "Ma", "Ten", txbXeCoMa, txbXeCoTen, false);
}
privatevoid txbTayLaiMa_Enter(object sender, EventArgs e)
{
ctlSearch.MSetCatalog(dtsXeCo.TaiXe, "MaTaiXe", "TenTaiXe", txbTayLaiMa, txbTayLaiTen, true, 200);
}
privatevoid txbTayLaiTen_Enter(object sender, EventArgs e)
{
ctlSearch.MSetCatalog(dtsXeCo.TaiXe, "MaTaiXe", "TenTaiXe", txbTayLaiMa, txbTayLaiTen, false, 200);
}

OK

Bây giờ ta có thể thử một tý 

F5 nào:
4.png

Rất sạch sẽ, không có chi phải không nào.
giờ bạn thử khỏ một phím coi:

Bạn có thể dùng phím mũi tên để chọn rồi nhấn Enter, nếu có mục phù hợp thì control sẽ tự điền thông tin cần thiết vào 2 TextBox mã và TextBox tên sau đó focus sẽ nhảy đến mục nhập khác, nếu không có mục phù hợp thì nó sẽ nhảy sang mục lựa chọn theo tên:

Hay tiêu chuẩn lọc những mục phù hợp bạn có thể coi ảnh để... đoán hoặc coi trong source, tui buồn ngủ rồi 
5.png

Nguồn bài viết: Sưu tầm

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML