PDA

View Full Version : سطرهای حذف شده از گرید، دوباره برمیگردن



Developer Programmer
شنبه 19 بهمن 1387, 11:30 صبح
سلام

من واسه اتصال به DB اینطور عمل میکنم


Dim myConnection As SqlConnection = New SqlConnection("Data Source=AFSHIN-PC;Initial Catalog=Northwind;Integrated Security=True")
Dim myDataSet As DataSet = New DataSet()
Dim myCommand As SqlCommand = New SqlCommand("Select * from Employees", myConnection)
Dim myDataAdapter As SqlDataAdapter = New SqlDataAdapter(myCommand)
Dim myCommandBuildr As SqlCommandBuilder = New SqlCommandBuilder(myDataAdapter)
واسه خوندن اطلاعات


myConnection.Open()
myDataAdapter.Fill(myDataSet, "Employees")

With TextBox2.DataBindings
.Clear()
.Add("Text", myDataSet, "Employees.LastName")
End With

With DataGridView1
.DataBindings.Clear()
.DataSource = myDataSet
.DataMember = "Employees"
End With
یه گرید روی فرمه، که هر بار کاربر سطری رو ویرایش کرد من با این روال، تغییرات رو ذخیره میکنم


Try
If myDataSet.HasChanges Then

'When you call the EndCurrentEdit method, the changes are kept
Me.BindingContext(myDataSet, "Employees").EndCurrentEdit()

'validation LastNames
Dim tDS As DataSet = myDataSet.GetChanges()
For Each dr As DataRow In tDS.Tables(0).Rows
If String.IsNullOrEmpty(dr("LastName").ToString()) Then MessageBox.Show("LastName is empty", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Error)
Next

myDataAdapter.Update(myDataSet.Tables(0))
myDataSet.AcceptChanges()

End If
Catch errObj As Exception
MsgBox(errObj.Message.ToString())
myDataSet.RejectChanges()
End Try

'Refresh
Button1_Click(sender, e)
مشکل اینجاست که وقتی کاربر با فشار کلید DEL ، سطری رو پاک میکنه، اون سطر از گرید حذف میشه اما با Refresh کردن، دوباره برمیگرده... وقتی هم که روال بالا رو فراخوانی میکنم میگه سطر حذف شده رو پیدا نمیکنم !
واسه همین من یه Button گذاشتم که کاربر روی سطر بایسته و روی Button کلیک کنه سطر رو حذف میکنه...


Dim CurrentRow As Integer = 0
CurrentRow = Me.BindingContext(myDataSet, "Employees").Position

myCommand = New SqlCommand()
With myCommand
.CommandText = "Delete from Employees where EmployeeID=@EmpID"
.Connection = myConnection
.Parameters.Add("@EmpID", SqlDbType.Int).Value = myDataSet.Tables(0).Rows(CurrentRow)("EmployeeID")
.ExecuteNonQuery()
End With

'Reload data
Button1_Click(sender, e)
منتها من دوست دارم، کاربر هر طور تغییراتی رو که دوست داره انجام بده و با کلیک روی Update همه تغییرات ذخیره بشن(چیزی شبیه BatchUpdate)
چیکار کنم که حتی سطری رو که با فشار دادن دگمه DٍEL حذف شده رو بعد از کلیک روی Update در جدول ذخیره کنم؟