PDA

View Full Version : datagrideviwe و errorprovider



mohsen_zelzela00
دوشنبه 01 مهر 1387, 20:51 عصر
با سلام خدمت دوستان عزيز

من وقتي كه به فزض مثال يه اطلاعاتي رو insert ميكنم و يه چند فيلد غير مهم رو در اون پر نكنم اطلاعات رو كاربر ميتونه ذخيره كنه حالا ميخوام وقتي كه تمام اطلاعات رو به وسيله datagrideviwe داره مشاهده ميكنه با استفاده از errorprovider يك خطا كنار اون ستون نشون بده كه به كاربر بگه كه شما اطلاعات اين ركورد رو هنوز كامل نكرديد

با تشكر از دوستان عزيز

mohsen_zelzela00
سه شنبه 02 مهر 1387, 11:36 صبح
دوستان کسی نمیتونه کمکم کنه

mohsen_zelzela00
پنج شنبه 04 مهر 1387, 17:29 عصر
دوستان يعني كسي نميدونه چگونه بايد براش كد بنويسم

ali_md110
پنج شنبه 04 مهر 1387, 21:16 عصر
از این روال درو استفاده کنید

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim bln_dg_cell_empty As Boolean 'در بخش جنرال برنامه قرار دهید
Dim row As DataGridViewRow
For Each row In DataGridView1.Rows
If row.IsNewRow = False Then 'چنانپه دیتاگراید در جالت رکورد جدید نباشد
For j As Integer = 0 To DataGridView1.ColumnCount - 2
'چنانچه ردیف خالی نباشد و رشته داخلی ان برابر با "" نباشد
If Not row.Cells(j).Value Is Nothing AndAlso Not row.Cells(j).Value.ToString().Trim() = "" Then
row.Cells(j).ErrorText = ""
bln_dg_cell_empty = True 'این متغیر در صورت خالی نبودن سلولها مثبت شده و برای تاییداجرای زخیره یا روال دلخواه بکار میرود
Else
row.Cells(j).ErrorText = "خانه های خالی را تکمیل کنید"
MsgBox("فیلد " & DataGridView1.Columns(j).HeaderText.ToString & " خالی را تکمیل کنید", , "بسیار خوب")
DataGridView1.Focus()
row.Cells(j).Selected = True
bln_dg_cell_empty = False 'اگر سلولی خالی بود منفی شده و عمل زخیره کردن نیز اجازه داده نمیشود

Exit Sub
End If
Next
End If
Next
If bln_dg_cell_empty = True Then 'در صورتیکه متعیر مثبت باشد یعنی سلولی خالی نباشد
If MsgBox("مایل به کدام مورد هستید", MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then

'اجرای روال دلخواه '

End If
End If



End Sub

رویداد cellvalidating دیتاگراید ویو هم میتونه یک سری مجدودیتها داشته باشه
مثل زیر ولی من اولی رو پیشنهاد میکنم

If Not (DataGridView1.Rows(e.RowIndex) Is Nothing) AndAlso Not DataGridView1.Rows(e.RowIndex).IsNewRow Then
Dim i As Integer
For i = 0 To DataGridView1.ColumnCount - 2
If DataGridView1.Rows(e.RowIndex).Cells(i).Value Is Nothing OrElse DataGridView1.Rows(e.RowIndex).Cells(i).Value.ToSt ring().Trim() = "" OrElse DataGridView1.Rows(e.RowIndex).Cells(i).Value.ToSt ring().Length = 0 AndAlso Not DataGridView1.Rows(e.RowIndex).Cells(i).IsInEditMo de = True Then
DataGridView1.Rows(e.RowIndex).Cells(i).ErrorText = "فیلد " & DataGridView1.Columns(i).HeaderText.ToString & " خالی را تکمیل کنید"
MsgBox("فیلد " & DataGridView1.Columns(i).HeaderText.ToString & " خالی را تکمیل کنید")
e.Cancel = False

Else
e.Cancel = True
DataGridView1.Rows(e.RowIndex).Cells(i).ErrorText = ""

DataGridView1.Refresh()
End If
Next

End If