PDA

View Full Version : سوال: ذخیره مستقیم در دیتا گرید ویو datagrid view در VB.NET (توضیحات به همراه کد)



tolid123456789
پنج شنبه 26 شهریور 1394, 09:53 صبح
سلام
من برنامه ای نوشتم که یک کلاس داره به نام MYDB

Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class MyDB
Public error_farsi As Boolean = False
Public lasterror As String = ""
Public con As New SqlConnection("data source=.;integrated security=true; database=dbname")
Dim cmd As New SqlCommand
Dim da As New SqlDataAdapter
Public Sub connect()
If con.State = ConnectionState.Closed Then con.Open()
End Sub
Public Sub disconnect()
If con.State = ConnectionState.Open Then con.Close()
End Sub
Public Function selectt(ByVal sql As String) As DataTable
'خروجي اين تابع يك جدول - ديتا تيبل است
cmd.CommandText = sql
cmd.Connection = con
Dim dt As New DataTable
Try
da.SelectCommand = cmd
da.Fill(dt)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return (dt)
End Function
Public Sub docommand(ByVal sql As String)
lasterror = ""
Try
cmd.CommandText = sql
cmd.Connection = con
cmd.ExecuteNonQuery()
Catch ex As Exception
If error_farsi = True Then
lasterror = "خطا در ثبت اطلاعات"
Else
lasterror = ex.Message
End If
End Try
End Sub
End Class

حالا برای نمایش جدول مورد نظرم از کلاسی به نام table1_class استفاده کردم:

Public Class table1_class
Dim db As New MyDB
Public id_personal As String


Public Function table1_by_idpersonal() As DataTable
'خروجي جدول
'لیست نمرات بر حسب شماره دانشجویی را بر می گرداند
Dim sql As String = "select * from table1_tbl where id_personal='{0}' ORDER BY nomre"
sql = String.Format(sql, id_personal)
Dim dt As New DataTable()
db.connect()
dt = db.selectt(sql)
db.disconnect()
Return dt
End Function
End Class


حالا در فرمم یک دیتا گرید گذاشتم که با زدن شماره دانشجو از textbox1 نمرات دانشجو در datagrid1 نمایش داده میشه:

Dim table1class As New table1_class

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
table1class.id_personal = textbox1.Text
Try
datagrid1.DataSource = table1class .table1_by_idpersonal()

Catch ex As Exception
MsgBox("Error:01")
End Try

End Sub



حالا می خوام وقتی مقداری در دیتا گریدم رو کاربر تغییر داد (برای مثال نمره درس خاصی) با زدن یک دکمه این اطلاعات ذخیره بشه.
یک راه حل این بود که برای تغییر هر رکورد در دیتا گرید روی اون دابل کلیک می کردم و یه فرم دیگه درست می کردم و اطلاعات همون رکورد رو توش صدا می زدم و با تغییر مقادیر توسط کاربر با یک Update ذخیره سازی انجام می شد و زمانی که فرم دوم بسته می شد دیتا گریدم Refresh می شد.
این روش در زمانی که شما بخواید مقادیر زیادی از دیتا گرید رو تغییر بدید بسیار وقت گیره.
در روش Wizard که دیتا ست و ... رو می نداختیم رو فرم بسیار ساده می تونستیم کدی داشته باشیم که با تغییر مستقیم کاربر روی دیتا گرید مقادیر ذخیره بشند. ولی با روش اولی که کدها و توضیحاتش رو دادم نمی دونم چه کار باید بکنم که با تغییر مستقیم کاربر بر روی دیتا گرید ذخیره سازی انجام بشه.

لطفا راهنمایی کنید
با تشکر