ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 2175|ตอบกลับ: 3

รบกวรขอคำชี้แนะ ทำ CheckBoxในDataGrid .net

[คัดลอกลิงก์]

2

กระทู้

4

โพสต์

141

เครดิต

Member

Rank: 2

เครดิต
141

ผมพึ่งลองมาศึกษา .net 2015 ต่อกับฐานข้อมูล+DataGrid ได้แล้ว แต่ต้องการ สร้าง CheckBoc ใน DataGrid  ทีมีข้อมูล 1 หรือ 0   แทนสถานะเช็ค กับ ไม่เช็ค  มีลิงค์หรือบทความให้ศึกาษาหน่อยครับ

308

กระทู้

498

โพสต์

6019

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6019
โพสต์ 2020-9-21 15:52:14 | ดูโพสต์ทั้งหมด

มีตัวอย่างอยู่ที่เรื่อง [VB.NET] การสร้างจดหมายเวียน หรือ Mail Merge ด้วยของฟรี Syncfusion แล้วครับ ...

หรือใช้ฟังค์ชั่น CBool ในการแปลงตัวเลขจำนวนเต็มให้เป็น TRUE/FALSE หรือ Checked/UnChecked ... จับลาก DataGridView มาวางไว้บนฟอร์ม แก้ชื่อให้เป็น dgvData เท่านั้นพอ เพราะที่เหลือจะใช้โค้ดทั้งหมดครับ
  1. Public Class frmDataGridViewCheckBox

  2.     Private Sub frmDataGridViewCheckBox_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  3.         Call SetupDGVData(dgvData)
  4.         Call FillDataSample()
  5.     End Sub

  6.     Private Function FillDataSample() As DataTable
  7.         FillDataSample = Nothing
  8.         Try
  9.             Dim tbl As New DataTable
  10.             tbl.Columns.Add("ProductPK", GetType(Integer))
  11.             tbl.Columns.Add("ProductName", GetType(String))
  12.             tbl.Columns.Add("chkStock", GetType(Boolean))
  13.             '// กำหนด 0 = Unchecked, 1 = Checked
  14.             '// หากอยากได้กลับกันก็ใช้ Not (CBool(1))
  15.             Dim row As String() = New String() {"1", "Product 1", CBool(1)}
  16.             dgvData.Rows.Add(row)
  17.             row = New String() {"2", "Product 2", CBool(0)}
  18.             dgvData.Rows.Add(row)
  19.             row = New String() {"3", "Product 3", CBool(1)}
  20.             dgvData.Rows.Add(row)
  21.             row = New String() {"4", "Product 4", Not (CBool(1))}
  22.             dgvData.Rows.Add(row)
  23.             Return tbl
  24.         Catch ex As Exception
  25.             MessageBox.Show(ex.Message)
  26.         End Try
  27.     End Function

  28.     '// เหตุการณ์ในการคลิ๊กเมาส์ลงในแต่ละเซลล์ของหลักที่ 3 (Index = 2)
  29.     Private Sub dgvData_CellContentClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvData.CellContentClick
  30.         '// Column Index = 2
  31.         If dgvData.Columns(e.ColumnIndex).Name = "chkStock" Then
  32.             Dim isChecked As Boolean = dgvData.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
  33.             If isChecked = False Then
  34.                 dgvData.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = True
  35.             Else
  36.                 dgvData.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = False
  37.             End If
  38.         End If
  39.     End Sub

  40.     ' / --------------------------------------------------------------------------------
  41.     '// Initialize DataGridView @Run Time
  42.     Private Sub SetupDGVData(ByRef DGV As DataGridView)
  43.         With dgvData
  44.             .RowHeadersVisible = False
  45.             .AllowUserToAddRows = False
  46.             .AllowUserToDeleteRows = False
  47.             .AllowUserToResizeRows = False
  48.             .MultiSelect = False
  49.             .SelectionMode = DataGridViewSelectionMode.FullRowSelect
  50.             .ReadOnly = True
  51.             .Font = New Font("Tahoma", 9)
  52.             ' Columns Specified
  53.             .Columns.Add("ProductPK", "ProductPK")
  54.             .Columns.Add("ProductName", "Product Name")
  55.             '// Select Print.
  56.             Dim chkStock As New DataGridViewCheckBoxColumn
  57.             .Columns.Add(chkStock)
  58.             chkStock.HeaderText = "In Stock"
  59.             chkStock.Name = "chkStock"
  60.             With .Columns("chkStock")
  61.                 .HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  62.                 .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  63.             End With
  64.             ' Autosize Column
  65.             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
  66.             '// Even-Odd Color
  67.             .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
  68.             ' Adjust Header Styles
  69.             With .ColumnHeadersDefaultCellStyle
  70.                 .BackColor = Color.Navy
  71.                 .ForeColor = Color.Black ' Color.White
  72.                 .Font = New Font("Tahoma", 9, FontStyle.Bold)
  73.             End With
  74.         End With
  75.     End Sub

  76. End Class
คัดลอกไปที่คลิปบอร์ด

DataGridCheckBox.png
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

4

โพสต์

141

เครดิต

Member

Rank: 2

เครดิต
141
 เจ้าของ| โพสต์ 2020-9-22 07:59:08 | ดูโพสต์ทั้งหมด

ขอบคุณมากๆครับ ผมลองไปโหลด Syncfusion ลงทะเบียนมาใช้แล้วครับ เป็น v1.8 มันให้ทดลองใช้ 30วัน ไม่รู้ว่าผมโหลดมาถูกตัวหรือเปล่า เลยยังไม่ได้ทดลองใช้ครับ

2

กระทู้

4

โพสต์

141

เครดิต

Member

Rank: 2

เครดิต
141
 เจ้าของ| โพสต์ 2020-9-22 08:20:09 | ดูโพสต์ทั้งหมด

  Dim row As String() = New String() {"1", "Product 1", CBool(1)}
            DataGridView1.Rows.Add(row)
            row = New String() {"2", "Product 2", CBool(0)}
            DataGridView1.Rows.Add(row)
            row = New String() {"3", "Product 3", CBool(1)}
            DataGridView1.Rows.Add(row)
            row = New String() {"4", "Product 4", Not (CBool(1))}

ทดลองรันแล้วได้ปกติครับ แล้วถ้าผมเอาท่อนนี้มา Sql Table ข้อมูลมาลงได้ไหมครับ  หรือต้องมีคำสั่ง วนลูปอีกที ขอบคุณครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-4-16 19:09 , Processed in 0.215970 second(s), 5 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้