2009-06-23 11 views
6

Tôi đang cố gắng thêm một cột hộp kiểm vào một DataGridView trong một ứng dụng biểu mẫu cửa sổ đơn giản.Trợ giúp với việc thêm cột hộp kiểm vào DataGridView dưới dạng cửa sổ

Tôi đang rút lại một số dữ liệu từ cơ sở dữ liệu bằng cách sử dụng ADO.NET, đưa vào một datatable, và sau đó thiết lập datagridview datasource cho datatable. Sau đó tôi muốn thêm một cột hộp kiểm làm cột thứ hai. Cho đến nay tôi có mã này có vẻ như hoạt động:

' Code here to connect to database 
Dim da As New SqlDataAdapter(cmd) 
Dim dt As New DataTable 
da.Fill(dt) 

MainForm.MyDataGridView.DataSource = dt 

Dim ChkBox As New DataGridViewCheckBoxColumn 

ChkBox.FlatStyle = FlatStyle.Standard 
MainForm.MyDataGridView.Columns.Insert(1, ChkBox) 

Mã này 'hoạt động' và tôi nhận MyDataGridView hiển thị dữ liệu với cột hộp kiểm ở đúng vị trí trong bảng.

Tuy nhiên, vì một lý do nào đó, tôi không thể chọn bất kỳ hộp kiểm nào trong DataGridView? Tôi đã thử rất nhiều thứ (ví dụ: thay đổi trạng thái chỉ đọc của cột) nhưng không thể làm cho nó hoạt động.

Có điều gì đó hiển nhiên mà tôi bị thiếu không?

Trả lời

11

Thêm cột mới trong các thuộc tính của DataGridView bởi:

  1. Cột Chọn từ tính bảng điều khiển và kích đúp vào nó
  2. sau đó chọn "Thêm ..." nút
  3. sau đó đặt cột mới là "Chưa cam kết Cột"
  4. Cho nó một cái tên và chọn kiểu của nó "DataGridViewCheckBoxColumn"
  5. Đặt tiêu đề bạn muốn và làm chắc chắn rằng "chỉ đọc" là không chọn.

là vậy.

(Nếu trường cơ sở dữ liệu (trong SQL Server) là loại 'chút' thì các datagridview tự động ánh xạ nó vào datagridview như một hộp kiểm thay vì một hộp. Không mã hóa cần thiết.)

+0

Wahid - cảm ơn vì đã dành thời gian trợ giúp. Tôi đã thử điều này và tôi đã nhận nó làm việc rất biết ơn sự giúp đỡ của bạn. Cảm ơn nhiều –

+0

Tôi không thể chọn hộp kiểm. Nó luôn được bỏ chọn. – IsmailS

+0

@ Ismail: hãy chắc chắn rằng "Chỉ đọc" KHÔNG được chọn –

3
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    if(dataGridView1.Columns.Count == 13) 
    { 
     DataGridViewCheckBoxColumn chkSelect = new DataGridViewCheckBoxColumn(); 
     { 
      chkSelect.HeaderText = "Select All"; 
      chkSelect.Name = "chkSelect"; 
      chkSelect.Selected = false; 


     } 
     dataGridView1.Columns.Insert(13, chkSelect); 
    } 

}  
+0

Tôi sử dụng tính năng này. Nó hoạt động! cảm ơn – swdev

3
Private Sub ADD_Column() 

    Dim AddColumn As New DataGridViewCheckBoxColumn 

    With AddColumn 
    .HeaderText = "ColumnName" 
    .Name = "Column Name that will be displayed" 
    .Width = 80 
    End With 

    dgAdmin.Columns.Insert(1, AddColumn) 

End Sub 
0

Hãy thử điều này:

 DataGridViewCheckBoxColumn chkBoxCol = new DataGridViewCheckBoxColumn(); 
     DataGridView1.Columns.Add(chkBoxCol); 
1

tôi đã có vấn đề này một lần, nhưng tôi giải quyết nó. L tải dữ liệu từ tập dữ liệu và điền vào datagridview. Tôi đã thiết lập thuộc tính readOnly của datagridview = True, có nghĩa là bạn không thể sửa đổi dữ liệu trong số datagridview. Chỉ cần đặt AllowUserToAddColumn thành Sai và thực hiện readOnly = False và thao tác này sẽ hoạt động.

2
Dim checkBoxColumn As New DataGridViewCheckBoxColumn() 
checkBoxColumn.HeaderText = "" 
checkBoxColumn.Width = 30 
checkBoxColumn.Name = "checkBoxColumn" 
dataGridView1.Columns.Insert(0, checkBoxColumn)