Gọi dữ liệu từ DataGridView và ListView lên textbox khi click dòng trong C#

Gọi dữ liệu từ DataGridView và ListView lên textbox khi click dòng trong C#

Trong lập trình winform, các bảng dữ liệu không chỉ đóng vai trò là liệt kê danh sách dữ liệu mà các dữ liệu chứa trong nó có thể được dùng để làm các công việc quan trọng khác nữa như việc sửa hay xóa dữ liệu, công việc này được gọi là binding data (ràng buộc dữ liệu). Trong bài viết này mình sẽ chia sẻ cách gọi dữ liệu từ DataGridView hoặc ListView lên textbox khi click vào một dòng dữ liệu trong nó sử dụng ngôn ngữ C#.

Lấy dữ liệu lên DataGridView và ListView

Trước tiên mình sẽ lấy dữ liệu lên hai control này. Kéo thả contron dataGridView và đặt tên nó là “dataGridView1“, kéo thả listView và đặt tên nó là “listView1“.

Trong bài viết này mình sử dụng dữ liệu từ SQL server, bạn có thể sử dụng các loại dữ liệu khác cũng không sao.

Đầu tiên là cơ sở dữ liệu của mình có một bảng tbl_test với hai trường dữ liệu là id và ten như sau.

Tiếp theo là hàm để tải dữ liệu lên

private void loaddata()
 {
 SqlConnection con = new SqlConnection(@"chuỗi_kết_nối_đến_cơ_sở_dữ_liệu");
 SqlCommand cmd = new SqlCommand("select * from tbl_test", con);
 SqlDataAdapter da = new SqlDataAdapter(cmd);

DataTable dt = new DataTable();
 da.Fill(dt);
//Tải dữ liệu lên dataGridView
dataGridView1.DataSource = dt;

//Tải dữ liệu lên listView
int i = 0;
 foreach (DataRow dr in dt.Rows)
 {
 listView1.Items.Add(dr["id"].ToString());
 listView1.Items[i].SubItems.Add(dr["ten"].ToString());
 i++;
 }

}

Nhớ gọi hàm này trong hàm load của form để thực thi khi form khởi động.

Kết quả.

Tuy nhiên bạn có thể thấy bảng list view không hiển thị hết dữ liệu. Bạn thực hiện theo các bước sau đây nhé.

Trong bảng này bạn cũng có thể đổi các tên cột và định dạng cho các cột. Đây là điều mình thích ở list view và mình thường xuyên sử dụng nó để thay thế cho dataGridView.

Kết quả

Bây giờ mình sẽ tiến hành lấy dữ liệu từ DataGridView và ListView lên textbox nằm phía trên khi người dùng click vào các dòng dữ liệu tương ứng.

Gọi dữ liệu từ DataGridView hoặc ListView lên textbox

Gọi dữ liệu từ DataGridView lên textbox

Bạn vào phần event trong properties của DataGridView và click đôi vào dòng CellClick để chuyển đến phần viết code cho sự kiện này.

Sau đó viết đoạn code sau vào:

 int numrow;
 numrow = e.RowIndex;
 textBox1.Text = dataGridView1.Rows[numrow].Cells[1].Value.ToString();
  • numrow là một biến lưu chỉ số index của hàng khi hành động click xảy ra trên hàng đó.
  • Rows[numrow].Cells[1] là đoạn xác định vị trí của ô cần lấy ở đây là dòng được chọn và cột số 1 (tức là cột số hai).

Kết quả:

  • Bạn có thể sử dụng dòng “dataGridView1.Rows[numrow].Cells[1].Value.ToString();” và thay chỉ số ở Cells để lấy dữ liệu ở các cột khác.

Gọi dữ liệu từ ListView lên textbox

Tương tự như với DataGridView, nhưng bạn có thể sử dụng bất cứ sự kiện nào như MouseClick, Click, Double Click,…. nhưng mình khuyên bạn nên sử dụng sự kiện SelectedIndexChanged. Sự kiện này sẽ được thực thi khi bạn lựa chọn một dòng khác.

Đoạn code cho sự kiện này như sau:

 foreach(ListViewItem items in listView1.SelectedItems)
 {
     textBox1.Text = items.SubItems[1].Text;
 }
  • Hàm lặp sẽ lấy một đối tượng item được lựa chọn, các item này được xem như một dòng với nhiều dữ liệu trong một cột.
  • SubItem sẽ xác định giá trị cột nào sẽ được lấy trong dòng đó.

Kết quả:

Các bài liên quan

Tuấn ĐC

Tuấn ĐC

Tôi thích tự do, làm những gì mình thích, thích đi nhiều nơi và học được nhiều thứ.

Liên hết bài viết: ""