PDA

View Full Version : سوال: ارور وقتی مقدار یکی از سلولهای دیتا گرید نال هست



mina.net
شنبه 02 خرداد 1388, 23:48 عصر
سلام دوستان
من برای طراحی یک فاکتور با دیتا گرید دچار مشکلاتی شدم.
دیتا گرید به یک جدول متصل است و در عین حال برای ورود فاکتور جدید یا ویرایش هم به کار می ره یک اروری از اول کم و بیش با برنامه بود البته یک خیلی کم پیش می اومد ولی برطرف می شد. اما حالا دیگه نمی شه .

کاربر نام انباری که از اون برای کالا فاکتور می زنه، کد کالا ، نام کالا و قیمت رو از طریق یک لیست انتخاب می کنه و به جدول اضافه می شه متاسفانه وقتی با انتخاب از لیست دیتا گرید مقدار می گیره سطر جدید به صورت خودکار اضافه نمی شه. (حتما باید کاربر به صورت دستی تایپ انجام بده) که البته اون رو هم تو برای سطر دوم گیر مده ارور زیر صادر می شه .
خواستم با کد نویسی یک خط به دیتا گرید اضافه کنم که بازم به علت اتصالی که با دیتا سورس داره نشد.
http://barnamenevis.org/forum/attachment.php?attachmentid=31175&stc=1&d=1243104380

anooshiran
یک شنبه 03 خرداد 1388, 03:34 صبح
سلام دوست عزيز

event زير رو به برنامه اضافه كن حل مي شه. داخلشم چيزي نمي خواد بنويسي



Private Sub DataGridView1_DataError(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArg s) _
Handles DataGridView1.DataError

End Sub

anooshiran
یک شنبه 03 خرداد 1388, 03:40 صبح
دوست عزيز

در مورد مشكل دومت. براي اين كار مجبوري يك كلاس براي گريد بنويسي




ProtectedOverridesSub OnValidated(ByVal eventargs As EventArgs)
Me.EditingControlDataGridView.NotifyCurrentCellDir ty(True)
MyBase.OnValidated(eventargs)
EndSub


ProtectedOverridesSub OnTextChanged(ByVal eventargs As EventArgs)
Me.EditingControlDataGridView.NotifyCurrentCellDir ty(True)
MyBase.OnTextChanged(eventargs)
EndSub




هر كدام از event هاي فوق با جمله Me.EditingControlDataGridView.NotifyCurrentCellDir ty(True يك سطر در صورتي كه آخرين سطر باشه به گريد اضافه مي كنه

mina.net
یک شنبه 03 خرداد 1388, 13:11 عصر
سلام دوست عزیز
من از کد اولی که گذاشتید استفاده کردم. هر وقت به یک ارور می رسه متنی که تایپ می شه رو پاک می کنه.
در مورد کد دومی که گذاشتی نمی دونم دقیقا کجا و چطور باید ازش استفاده کنم اگه بیشتر توضیح بدید ممنون می شم.

ali_md110
یک شنبه 03 خرداد 1388, 14:10 عصر
شما میتونید پس از اینکه از طریق لیست مقدار وارد دیتاگراید ویو گردید متدEndEdit شی BindingSource که بوسیله اون دیتاگراید رو به جدولتون بایند کردید اجرا کنید

If DG.CurrentCell Is DG.CurrentRow.Cells(0) Then
If DG.CurrentRow.Cells(0).Value Is DBNull.Value OrElse Val(DG.CurrentRow.Cells(0).Value) = 0 Then
Dim dialog As New Frmselectkala
If e.KeyCode = Keys.Enter Or e.KeyCode = Keys.F5 Then
DG.BeginEdit(True)
dialog.Location = New System.Drawing.Point
DG.CurrentRow.Cells(0).Value = dialog.ReturnValue
RadifBindingSource.EndEdit()

End If

End If
End If
دقت کنیدRadifBindingSource.EndEdit ()
ReturnValue مقداری است که از فرم انتخاب کالا دریافت میکنه و در اولین سلول دیتاگراید وارد میکنه

mina.net
سه شنبه 05 خرداد 1388, 11:48 صبح
سلام دوست عزیز
من متوجه نشدم منظورتون چیه اگه می شه بیشتر توضیح بدید
من برای بایند کردن از دستور زیر استفاده می کنم



da = New SqlDataAdapter("select * from M_ANBAR where id_factor ='" & TextBox1.Text & "'", con)
ds = New DataSet
da.Fill(ds, "M_ANBAR")
dv = New DataView(ds.Tables("M_ANBAR"))
DataGridView2.DataBindings.Clear()
DataGridView2.DataSource = ds.Tables("M_ANBAR")


ممنون از راهنمایی که انجام می دید.