 |
|
เพิ่มข้อมูลใหม่แล้วโหลดข้อมูลใหม่มาใส่ datagrid โดยเคลียข้อมูลเดิมใน datagrid ตอนโหลดฟอร์ม |
|
 |
|
|
 |
 |
|
ตอนโหลดฟอมมาผมสั่งให้โชว์ข้อมูลใน datagrid โดยเรียกใช้ showData()
Code (VB.NET)
Sub showData()
UseConnectDatabase()
Dim sql As String = "select * from alcohol order by al_id asc"
Dim cmd As New MySqlCommand(sql, MyConnect)
adapter = New MySqlDataAdapter(cmd)
adapter.Fill(data, "alcohol")
AlcoholDataGridView.DataSource = data.Tables("alcohol")
DisconnectDatabase()
End Sub
Private Sub Bindings()
al_noTextBox.DataBindings.Add("Text", data, "alcohol.al_no")
al_instituteTextBox.DataBindings.Add("Text", data, "alcohol.al_institute")
al_analynumberTextBox.DataBindings.Add("Text", data, "alcohol.al_analynumber")
al_booknumberTextBox.DataBindings.Add("Text", data, "alcohol.al_booknumber")
al_tubeTextBox.DataBindings.Add("Text", data, "alcohol.al_tube")
al_mgTextBox.DataBindings.Add("Text", data, "alcohol.al_mg")
Me.BindingContext(data, "alcohol").Position = 0 'กำหนดตำแหน่งแสดงเริ่มต้น
End Sub
Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click
UseConnectDatabase()
Dim sql As String = "insert into alcohol(al_no,al_date,al_institute," + _
"al_datein,al_booknumber,al_bookdate,al_analynumber,al_tube,al_result,al_mg )" + _
"values('" & CStr(al_noTextBox.Text) & "','" & CStr(aldateDTPK) & "'," + _
"'" & CStr(al_instituteTextBox.Text) & "','" & CStr(aldateinDTPK) & "'," + _
"'" & CStr(al_booknumberTextBox.Text) & "','" & CStr(albookdateDTPK) & "'," + _
"'" & CStr(al_analynumberTextBox.Text) & "','" & CStr(al_tubeTextBox.Text) & "'," + _
"'" & CStr(alresult) & "','" & CStr(almg) & "'" + _
")"
Dim cmd As New MySqlCommand(sql, MyConnect)
cmd.ExecuteNonQuery()
DisconnectDatabase()
showdata() 'ตรงนี้แหละครับที่อยากให้ดึงข้อมุลตอนเพิ่มมาใหม่ แต่ข้อมูลดึงซ้ำ
MessageBox.Show("เพิ่มข้อมูลเรียบร้อยแล้ว", "ข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
ปัญหาคือเวลาเพิ่มข้อมูล ผมเพิ่มตรงลงฐานข้อมูลเลยไม่ผ่าน datagird
datgrid ไว้แสดงข้อมุลอย่างเดียวครับ หลังจากเพิ่มแล้วสั่งให้แสดงข้อใหม่โดยเรียกใช้ showData() เหมือนเดิมมันจะมีข้อมุลเดิมซ้อนกัน 2ครั้งครับ
เช่นข้อมุลเดิมเป็น 1 2 3
เพิ่มเข้าไปใหม่จะเป็น 1 2 3 1 2 3 4 (4 คือที่เพิ่มเข้าไปใหม่) แบบนี้ครับเหมือนเรียกใช้ showData() สองครั้ง ก่อนเพิ่มและหลังเพิ่ม
ผมค้นหาเค้าแนะนำว่า
โดยปกติแล้วการที่จะนำข้อมูลมาแสดงบน DataGrid จะต้องผ่านตัวกลาง
เพราะฉะนั้นเมื่อต้องการให้ข้อมูลใน DataGrid แสดงค่าใหม่จึงต้องทำการ update ตัวกลาง
เช่น นำ DataGrid มาแสดงข้อมูลใน DataSet เมื่อมีการ update ข้อมูลลงใน Database
จะต้องทำการ Fill ข้อมูลลง DataSet ใหม่ ข้อมูลใน DataGrid จึงจะเปลี่ยน
ผมจึงเรียกใช้แทน adapter.Fill(data, "alcohol") แทน showData() แต่มันก็เหมือนเดิมครับ
ผมคิดว่ามันน่าจะต้องเคลียตัวแปล data=nothing แบบนี้แต่ก็ไม่ได้ครับ เพราะ data มันไป binding กับ textbox
ไม่ทราบต้องทำอย่างไรเพื่อให้มันรีเฟรสข้อมูลใหม่เวลเพิ่มครับ โดยล้างข้อมูลใน datagrid ตอนโหลดฟอร์มด้วย
Tag : .NET, Win (Windows App), VS 2008 (.NET 3.x)
|
ประวัติการแก้ไข 2010-11-22 14:35:27 2010-11-22 14:42:05
|
 |
 |
 |
 |
Date :
2010-11-22 13:21:55 |
By :
narubet |
View :
2888 |
Reply :
8 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้อง เคลียร์ dataset ก่อนครับ
Code (VB.NET)
sub showdata()
UseConnectDatabase()
dim ds as new dataset '***
dim dt as new datatable '***
Dim sql As String = "select * from person"
Dim cmd As New MySqlCommand(sql, MyConnect)
adapter = New MySqlDataAdapter(cmd)
'****
if not( ds.tables("alcohol") is nothing) then
ds.tables("alcohol").clear()
end if
'****
adapter.Fill(ds, "alcohol")
dt = ds.tables("alcohol")
AlcoholDataGridView.DataSource = dt
DisconnectDatabase()
end sub
|
 |
 |
 |
 |
Date :
2010-11-22 14:39:23 |
By :
tee |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณ คุณ tee มากครับในกานเพิ่มข้อมุลได้แล้วครับ ขอถามเพิ่มอีกนิดครับ
ผมจะเอาไปใช้กับการลบแก้ไขด้วยครับ มันเออเรอในส่วนที่
เมือผมคลิกลบ เออแบบนี้ครับ เพราะว่าผม binding datgrid ไว้กับ textbox ด้วยหรือเปล่าครับ พอลบออกตำแหน่ง indexเลยเปลี่ยนไปครับ
รบกวนแนะนำด้วยครับ

การลบ
Code (VB.NET)
Private Sub DelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DelButton.Click
UseConnectDatabase()
Dim aliddel As String = Me.AlcoholDataGridView(0, Me.AlcoholDataGridView.CurrentCell.RowIndex).Value.ToString() 'ดึงค่า al_no จาการคลิก
Dim sql As String = "delete from alcohol where al_id='" & aliddel & "'"
'MsgBox(sql)
Dim cmd As New MySqlCommand(sql, MyConnect)
Dim numrows As Integer = cmd.ExecuteNonQuery
showData()
MessageBox.Show("ลบข้อมูลเรียบร้อยแล้ว", "ข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Information)
'End If
End Sub
|
ประวัติการแก้ไข 2010-11-22 14:58:25 2010-11-22 15:00:35
 |
 |
 |
 |
Date :
2010-11-22 14:55:46 |
By :
narubet |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้ event cellmouseclick แล้วก็ส่งค่าให้ textbox
Code (VB.NET)
dim strIndex as string =""
private sub datagridview1_cellmouseclick(....................
if e.rowindex <> -1 then
with datagridview1
strIndex = .rows(e.rowindex).cells(0).values.tostring()
'or
'textbox1.text = .rows(e.rowindex).cells(0).values.tostring()
end with
end if
end sub
Code (VB.NET)
private sub delbutton_click(........................
connectdatabase()
dim sql as string = "delete from alcohol where '" & strIndex & "'"
'or
'dim sql as string = "delete from alcohol where '" & textbox1.text & "'"
...
...
...
end sub
ประมาณนี้หรือเปล่าครับ
ผิดพลาดประการใด ขอ อภัย ด้วยนะครับ
|
 |
 |
 |
 |
Date :
2010-11-22 16:50:15 |
By :
tee |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตรงนี้เป็นโค้ดตอนที่คลิก datagrid แล้วส่งค่า aliddel ครับเพื่อไปลบครับซึ่งมันก็ลบข้อมูลได้ และกำหนดค่า index สำหรับ binding
แต่พอลบเสร็จมันเออเรอที่ index ดังรูปครับ

Code (VB.NET)
Dim aliddel As String
Dim index As String
Private Sub AlcoholDataGridView_CellMouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles AlcoholDataGridView.CellMouseUp
aliddel= Me.AlcoholDataGridView(0, Me.AlcoholDataGridView.CurrentCell.RowIndex).Value.ToString() 'ดึงค่า al_no จาการคลิก
index = Me.AlcoholDataGridView(0, Me.AlcoholDataGridView.CurrentCell.RowIndex).RowIndex.ToString() 'ดึงค่า index al_no จาการ
Me.BindingContext(data, "alcohol").Position = index ' เออเรอตรงนี้ครับ
End Sub
Private Sub DelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DelButton.Click
UseConnectDatabase()
Dim sql As String = "delete from alcohol where al_id='" & aliddel & "'"
'MsgBox(sql)
Dim cmd As New MySqlCommand(sql, MyConnect)
Dim numrows As Integer = cmd.ExecuteNonQuery
showData()
MessageBox.Show("ลบข้อมูลเรียบร้อยแล้ว", "ข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Information)
'End If
End Sub
|
ประวัติการแก้ไข 2010-11-22 19:55:33 2010-11-22 19:57:35 2010-11-22 20:00:20
 |
 |
 |
 |
Date :
2010-11-22 19:51:08 |
By :
narubet |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วครับ หลังจากลบสั่ง
Code (VB.NET)
clearbinding()
showdata()
binding()
|
 |
 |
 |
 |
Date :
2010-11-23 08:21:06 |
By :
narubet |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือว่าใช้ตารางtextทำเป็นช่องแสดงรายการสินค้าและราคา อยู่หน้า form3 แต่อยากจะเอาข้อมูล ฟอม4ที่สร้างโดยปุ่มcommandจะให้ข้อมูลแสดงหน้า3ทำงัย ใช้โค้ดอรัยค่ะ ตอนนี่ทำ Vb6.0อยู่ค่ะ
|
 |
 |
 |
 |
Date :
2011-01-26 14:31:05 |
By :
nan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอ C# ด้วยได้ไหมค่ะ
|
 |
 |
 |
 |
Date :
2013-02-17 15:55:08 |
By :
แอนนา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้แปลงผ่านเว็บครับ VB.ENT to C# ลองหาดูครับ
|
 |
 |
 |
 |
Date :
2013-02-18 06:10:53 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|