PDA

View Full Version : سوال: عدم آپدیت شدن DataTable وقتی به صورت دستی سطری به دیتاگریدویو اضافه بشه



pooya1072
دوشنبه 25 مرداد 1395, 22:53 عصر
سلام
توی برنامه یک دیتاگریدویو قرار داره که Datasource اون یک Datatable که به دیتابیس متصله . همونطور که دوستان میدونن وقتی دیتاگریدویوبه یک منبعی متصل باشه نمیشه بهش مستقیما سطری اضافه کرد و باید به منبع (در اینجاDatatable) سطر اضاف کنیم.
MyDataTable.Rows.Add()
مشکل من اینه که اگر DGV.AllowUserToAddRows را False کنم و سطری به DataTable اضاف کنم (با دستور بالا) پس از ورود مقادیر در خانه های این سطر و اجرای دستور آپدیت این سطر به دیتابیس اصلی اضافه نمیشه در صورتیکه اگر مقدار DGV.AllowUserToAddRows را True بگیرم نیازی به اضافه کردن سطر نیست و آپدیت هم به درستی انجام میشه .
علت چیه؟ چکار باید کرد؟

gilsoft
چهارشنبه 27 مرداد 1395, 07:49 صبح
سلام دوست عزیز

باید از کد زیر ایده بگیری:
Dim DT As New DataTable("MyTable")

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim DC As DataColumn
Dim DR As DataRow

DC = New DataColumn("ID")
DC.Caption = "ردیف"
DC.DataType = System.Type.GetType("System.Int32")
DC.AutoIncrement = True
DC.AutoIncrementSeed = 1
DC.AutoIncrementStep = 1
DC.ReadOnly = True
DT.Columns.Add(DC)

DC = New DataColumn("Name")
DC.Caption = "نام"
DC.DataType = System.Type.GetType("System.String")
DC.MaxLength = 30
DT.Columns.Add(DC)

DC = New DataColumn("Family")
DC.Caption = "نام خانوادگی"
DC.DataType = System.Type.GetType("System.String")
DC.MaxLength = 50
DT.Columns.Add(DC)

For i As Integer = 1 To 5
DR = DT.NewRow
DR("ID") = i
DR("Name") = "Name" & CStr(i)
DR("Family") = "Family" & CStr(i)
DT.Rows.Add(DR)
Next

With DataGridView1
.AllowUserToAddRows = False
.DataSource = DT
End With
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim DR As DataRow
Dim i As Integer = DataGridView1.RowCount + 1

DR = DT.NewRow
DR("ID") = i
DR("Name") = "Name" & CStr(i)
DR("Family") = "Family" & CStr(i)
DT.Rows.Add(DR)

End Sub

موفق باشید .....