|
|
|
มีปัญหาเรื่อง CheckBox ใน DataGridView คะ มีปัญหาเรื่อง CheckBox ใน DataGridView คะ ใช้ vb2005 |
|
|
|
|
|
|
|
มีปัญหาเรื่อง CheckBox ใน DataGridView คะ ใช้ vb2005 เขียน WinApp คะ
ตอนนี้เขียนเพิ่ม CheckBox ได้เเล้วเเต่เมื่อติ๊กในช่อง CheckBox เเล้วเครื่องหมายติ๊กถูกมันไม่ค้างเอาไว้อะคะ
ทำยังไงดีคะ ตอนนี้เขียน code เเบบด้านล่างนี้ค่ะ
Code (VB.NET)
Private sub Refresh_Grid()
Dim d_adap As SqlDataAdapter
Dim d_set As DataSet
d_set = New DataSet
d_adap = New SqlDataAdapter("Select Dog_ID,Register_No,Dog_Name,Dog_Sex,Dog_Color,Dog_Price " & _
" from Kennel_Dog Where Dog_Status = 'SA' ", sqlConnection)
d_adap.Fill(d_set, "Kennel_Dog")
DataGridView.DataSource = d_set.Tables("Kennel_Dog")
Dim chkColumn As New DataGridViewCheckBoxColumn()
chkColumn.Name = "check"
chkColumn.Width = 30
chkColumn.DataPropertyName = "check"
chkColumn.HeaderText = ""
chkColumn.DisplayIndex = 0
DataGridView.Columns.Add(chkColumn)
DataGridView.Columns("Dog_ID").DisplayIndex = 1
DataGridView.Columns("Register_No").DisplayIndex = 2
DataGridView.Columns("Dog_Name").DisplayIndex = 3
DataGridView.Columns("Dog_Sex").DisplayIndex = 4
DataGridView.Columns("Dog_Color").DisplayIndex = 5
DataGridView.Columns("Dog_Price").DisplayIndex = 6
DataGridView.Columns("Dog_ID").HeaderText = "รหัสสุนัข"
DataGridView.Columns("Register_No").HeaderText = "เลขทะเบียน"
DataGridView.Columns("Dog_Name").HeaderText = "ชื่อ"
DataGridView.Columns("Dog_Sex").HeaderText = "เพศ"
DataGridView.Columns("Dog_Color").HeaderText = "สี"
DataGridView.Columns("Dog_Price").HeaderText = "ราคา"
DataGridView.Columns("Dog_ID").Width = 70
DataGridView.Columns("Register_No").Width = 100
DataGridView.Columns("Dog_Name").Width = 140
DataGridView.Columns("Dog_Sex").Width = 40
DataGridView.Columns("Dog_Color").Width = 100
DataGridView.Columns("Dog_Price").Width = 90
AddHandler DataGridView.CellContentClick, AddressOf DataGridView_CellContentClick
End sub
Private Sub Form13_1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Refresh_Grid()
End Sub
Private Sub DataGridView_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView.CellContentClick
Dim chk As DataGridViewCheckBoxCell = DirectCast(DataGridView.CurrentCell, DataGridViewCheckBoxCell)
'If chk.Value Is Nothing Then
' Exit Sub
'End If
If CInt(chk.Value) = 0 Then
chk.Value = 1
'MessageBox.Show(("คุณเลือก : " & DataGridView.CurrentRow.Cells("Dog_ID").Value.ToString()))
Else
chk.Value = 0
End If
End Sub
Tag : - - - -
|
|
|
|
|
|
Date :
2009-11-26 11:05:11 |
By :
numsom |
View :
8453 |
Reply :
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองสร้าง Class GlobalValue เอาไว้ครับ แล้วให้มันเก็บ ค่าที่เราเลือกเอาไว้ในนั้น
โดยพอเราเลือกค่า แล้วให้จับค่าทั้งหมดนั้นใส่ไปใน Datatable ก็ได้ครับ แล้วให้มันไปเก็ยใน Class GlobalValue
แล้ว พอเราจะ Show Datagrid ขึ้นมาค่อย ให้ไปตรวจสอบว่ามีค่า อยู่ใน Class GlobalValue ถ้ามีค่า ก็ให้ไป Get ค่ามา แสดงใน DataGrid โดยให้ทำการ ตรวจสอบ ใน event RowDatabound ของ DataGrid อะไรประมาณนี้ อ่ะครับ
|
|
|
|
|
Date :
2009-11-26 11:49:32 |
By :
ksillapapan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนเขียน code ให้ดูเป็นตัวอย่างหน่อยได้ไหมค่ะ
|
|
|
|
|
Date :
2009-11-26 15:56:59 |
By :
numsom |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อยากรู้ด้วยคนครับ
จะเอาไปใช้ทำ Project
|
|
|
|
|
Date :
2009-11-26 16:00:20 |
By :
artcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือ ตอนนี้ยังไม่สดวกเขียนให้ทั้งหมดอ่ะครับ งั้นเอาแบบนี้ไปดูก่อน
สร้าง Global Class ออกมาก่อนนะครับ
Code (C#)
namespace Global
{
public static class GlobalValue
{
private static DataTable dtb = null;
public static DataTable Dtb
{
set { dtb = value; }
get { return dtb; }
}
}
}
นำค่าจาก DataGridView มาเก็บใน Datatable ก่อนนะครับ อาจจะเป็นสถานะก็ได้เช่น Check แล้วให้เก็บค่า 1 ยังไม่ได้ Check เก็บ 0 หรือจะเก็บข้อมูลทั้ง Row ที่เรา เลือกก็ได้นะครับ
โดยเราก็จะเก็บ แบบนี้นะครับ Global.GlobalValue.Dtb = data;
ค่าที่เราเลือกจะเก็บอยู่ในนี้
ใน event RowDatabound ของ DataGrid เราก็เอาค่าไปใช้ในส่วนนี้
ตอนนี้ ยังไม่ว่างเขียนให้ทั้งหมด เดี้ยวยังไง จะตามเขียนให้นะครับ ^^
|
|
|
|
|
Date :
2009-11-26 16:55:59 |
By :
ksillapapan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆครับ ยังไงรบกวนด้วยนะครับ ผมจะติดตามครับ
ส่วน code นี้ผมจะเอาไปประยุกต์ดูครับได้หรือไม่เข้าใจจะมาโพสถามครับ
|
|
|
|
|
Date :
2009-11-26 17:22:13 |
By :
artcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังไงถ้ามีโจทย์ ก็ขอด้วยนะครับ เอาแบบ ครบๆ นะจะได้ ยกตัวอย่างได้ครบครับ
^^
|
|
|
|
|
Date :
2009-11-26 17:26:18 |
By :
ksillapapan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็คือผมต้องการ(เขียน WinApp โดย VB2005 นะครับ Code เป็น .vb ครับ)
1 ให้เเสดงข้อมูลสุดนัขใน DataGridView1 หนะครับโดยให้เเต่ละ row มี CheckBox
ก็เลยเขียน code เเบบนี้ครับ
Code (VB.NET)
Private sub Refresh_Grid()
Dim d_adap As SqlDataAdapter
Dim d_set As DataSet
d_set = New DataSet
d_adap = New SqlDataAdapter("Select Dog_ID,Register_No,Dog_Name,Dog_Sex,Dog_Color,Dog_Price " & _
" from Kennel_Dog Where Dog_Status = 'SA' ", sqlConnection)
d_adap.Fill(d_set, "Kennel_Dog")
DataGridView.DataSource = d_set.Tables("Kennel_Dog")
Dim chkColumn As New DataGridViewCheckBoxColumn()
chkColumn.Name = "check"
chkColumn.Width = 30
chkColumn.DataPropertyName = "check"
chkColumn.HeaderText = ""
chkColumn.DisplayIndex = 0
DataGridView.Columns.Add(chkColumn)
DataGridView.Columns("Dog_ID").DisplayIndex = 1
DataGridView.Columns("Register_No").DisplayIndex = 2
DataGridView.Columns("Dog_Name").DisplayIndex = 3
DataGridView.Columns("Dog_Sex").DisplayIndex = 4
DataGridView.Columns("Dog_Color").DisplayIndex = 5
DataGridView.Columns("Dog_Price").DisplayIndex = 6
DataGridView.Columns("Dog_ID").HeaderText = "รหัสสุนัข"
DataGridView.Columns("Register_No").HeaderText = "เลขทะเบียน"
DataGridView.Columns("Dog_Name").HeaderText = "ชื่อ"
DataGridView.Columns("Dog_Sex").HeaderText = "เพศ"
DataGridView.Columns("Dog_Color").HeaderText = "สี"
DataGridView.Columns("Dog_Price").HeaderText = "ราคา"
DataGridView.Columns("Dog_ID").Width = 70
DataGridView.Columns("Register_No").Width = 100
DataGridView.Columns("Dog_Name").Width = 140
DataGridView.Columns("Dog_Sex").Width = 40
DataGridView.Columns("Dog_Color").Width = 100
DataGridView.Columns("Dog_Price").Width = 90
AddHandler DataGridView.CellContentClick, AddressOf DataGridView_CellContentClick
End sub
Private Sub Form13_1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Refresh_Grid()
End Sub
Private Sub DataGridView_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView.CellContentClick
Dim chk As DataGridViewCheckBoxCell = DirectCast(DataGridView.CurrentCell, DataGridViewCheckBoxCell)
'If chk.Value Is Nothing Then
' Exit Sub
'End If
If CInt(chk.Value) = 0 Then
chk.Value = 1
'MessageBox.Show(("คุณเลือก : " & DataGridView.CurrentRow.Cells("Dog_ID").Value.ToString()))
Else
chk.Value = 0
End If
End Sub
2 ให้เเสดงเครื่องหมายถูกค้างไว้ใน CheckBox ที่เราเลือกครับ
3 พอกดส่งค่าก็ให้ส่งค่าที่เลือกทั้งหมดไปเเสดงใน DataGridView2 ครับ
4 เมื่อกลับมาที่หน้าเดิม DataGridView1 ก็ยังต้องเเสดงค่าที่เราเลือกเอาไว้อยู่ครับ
|
|
|
|
|
Date :
2009-11-26 17:37:25 |
By :
artcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เดี้ยวกลับบ้านแล้วจัดให้ครับ ความจริงผมมองว่ามันก็เหมือนๆ กันและครับ DataGridView หรือ GridView
WinApp หรือ WebApp จะเก็บค่า ถ้าเป็น WebApp ผมก็ใช้ Session ก็จบ ถ้า WinApp ผมก็ลองใช้ Class GloBal มาเก็บค่า ที่เหลือเหมือนกันหมด และ ^^
|
|
|
|
|
Date :
2009-11-26 17:58:17 |
By :
ksillapapan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังไงรบกวนด้วยนะครับ
เอ่ออยากจะของ mail ไว้คุยด้วยได้ป้ะครับ
|
|
|
|
|
Date :
2009-11-26 18:16:09 |
By :
artcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[email protected]
โทษทีครับงานเยอะมากๆ ยังไม่ได้ทำเลย ยังไงก็ปรึกษาได้ครับ ^^
|
|
|
|
|
Date :
2009-11-27 10:40:24 |
By :
ksillapapan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
artCode ลอง ไปดู ตรงที่ กรณีที่มีการเลือก CheckBox ทั้งหมด แล้ว มันจะมีการกดปุ่มบันถึกข้อมูล ตรงนั้นอ่ะครับ
ให้มีการเก็บค่าที่เราเลือก ทั้งหมดไว้ใน DataTable ด้วย Global.GlobalValue.Dtb = data; แบบนี้นะครับ
แล้วก็เอาค่าส่วนนี้ ถ้าต้องการบันทึกลง Database ก็ทำเลยปกติ
เมื่อเราต้องการให้แสดงค่าใน DataGridview ที่ 2 เราก็แค่ไปเรียกค่าจาก Global.GlobalValue.Dtb มาใช้ในการสร้าง DataGridview ที่ 2
และถ้าต้องการกลับมาแสดงหน้าเดิม ก็ให้มีการดึงค่า ที่เราเก็บว่ามาตรวจสอบกับ CheckBox ว่าเช่น
Row ไหนมีค่า ตรงกับค่าที่เราเก็บใน Datatable แล้ว ให้ CheckBox ของ Row นั้น Check
ก็ประมาณนี้ ครับ
โทษทีพอดีงานยุ่ง + ไม่ได้ลง ตัว VB.Net ไว้อ่ะ ^^ ยังไงก็แอดเมลล์มาแล้วกันนะครับ
|
|
|
|
|
Date :
2009-11-27 10:53:41 |
By :
ksillapapan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับคุณ Poo ผมเเอดไปเรียบร้อยเเล้วนะครับ
|
|
|
|
|
Date :
2009-11-27 13:01:18 |
By :
numsom |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ความคิดเห็นนะคับ สร้างฐานข้อมูลมาเก็บสถานะที่ติ๊ก แล้วทำการ update แล้ว กลับมาหน้าเดิม ก็เรียกสถานะนั้นขึ้นแล้วให้มันติ๊กใหม่ตอน me.close หรือไม่ ทำ ตัวแปรเป็น array แบบ public มาเก็บค่าก็ได้คับถ้ามีเยอะ ลองดูเท่าที่บอกเป็นแนวครับผม
|
|
|
|
|
Date :
2010-03-26 19:15:33 |
By :
minator |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
thank อยากได้อยู่พอดี
|
|
|
|
|
Date :
2010-03-26 22:16:27 |
By :
hiso_namtan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมแอดแล้วครับ ไว้จะปรึกษานะครับ
|
|
|
|
|
Date :
2010-03-27 16:40:07 |
By :
adunafah |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อยากได้อยู่พอดี
|
|
|
|
|
Date :
2010-03-28 14:16:52 |
By :
hiso_namtan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|