PDA

View Full Version : سوال: در مورد ديتا گريد ويو



tto_baran
جمعه 21 فروردین 1388, 09:18 صبح
با سلام خدمت دوستان

خواهشمندم لطف فرموده و من را راهنمايي فرماييد

ميخواهم در ديتا گريدي كه دارم و مثلا داراي ستونهاي " تعداد " - "في" - "قيمت" و ... ميباشد وقتي مقدار مندرج در يكي از سطرهاي ستون " تعداد " را تغيير دادم مقدار همان سطر در ستون قيمت ـــــ حالا چه بصورت اتو ماتيك و يا پس از فشار دادن يك كليد ـــــ به حاصل ضرب مقدار همان سطر در ستونهاي " تعداد " و " في " تغيير كند

alimanam
جمعه 21 فروردین 1388, 12:08 عصر
با عرض سلام خدمت شما دوست عزيز اين نمونه كدها رو توي رويداد مشخص شده datagridview قرار بده مشكلت حل ميشه فقط توجه كن كه مقدار انديس ستون رو با انديس ستون برنامه خودت تغيير بدي .

Private Sub Datagridview1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Datagridview1.CellValueChanged
On Error Resume Next

If Datagridview1.CurrentCell.ColumnIndex = 3 Or Datagridview1.CurrentCell.ColumnIndex = 4 Then
Datagridview1.CurrentRow.Cells(5).Value = Val((Datagridview1.CurrentRow.Cells(3).Value) * Val(Datagridview1.CurrentRow.Cells(4).Value))
End If

End Sub

tto_baran
شنبه 22 فروردین 1388, 08:20 صبح
با سلام

دوست عزيز از اين كه توجه كردي بي نهايت سپاسگزارم
متاسفانه مشكل حل نشد و همچنان كه در اين عكس مي بيني اين كد اجرا نميشه منتظر راهنمايي هاي شما هستم
http://upload.iranblog.com/1/1239508117.jpg

alimanam
شنبه 22 فروردین 1388, 15:30 عصر
سلام به شما دوست عزيز

ببين من متوجه error كه شما عكس اون رو گذاشتين نمي شم يعني اينكه اصلا مشخص نيست چه نوع ايرادي به كد ميگيره . ولي من احتمال ميدم كه شما شماره datagridview1.CurrentRow.cells(شماره ستون) رو اشتباهي وارد ميكني من اين كد رو روي ديتاگريد ويوي برنامه خودم نوشتم شما بايد شماره ستون رو به تناسب ديتا گريدويوي برنامه خودتون تغيير بدين توي كد بالا من ابتدا ياد آور شده بودم كه شماره ستون ها رو خودت بايد عوض كني براي اينكه موضوع واستون جا افتاده باشه يه نمونه آماده كردم كه از مسير زير ميتونيد دانلودش كنيد . يا علي

http://persiandrive.net/460915

tto_baran
دوشنبه 24 فروردین 1388, 22:46 عصر
سلام دوست گرامي

متاسفانه فايلي كه ضميمه كرده بوديد باز نمي شود و من فقط توانستم به كد هاي آن دست رسي پيدا كنم كه متاسفانه باز هم همان error قبلي مانع از اجراي صحيح كد شد.

mina.net
سه شنبه 25 فروردین 1388, 19:05 عصر
سلام دوست عزیز
بعضی وقتها موقعی که سلول مورد نظر خالی باشه این ارور صادر می شه . شما مقدار سلول را به یک متغییر بده و این فرایند رو داخل یک try قرار بده و اگر خطا ایجاد شده مقدار صفر باشه در حقیقت هر فقط سلول خالی بود قسمت دوم try انجام می شه و مقدار متغیر برابر با صفر بشه. اینکار را بکن اگه حل نشد. کدی که نوشتی رو قرار بده من یا دیگر دوستان حتما کمک خواهند کرد.

tto_baran
پنج شنبه 27 فروردین 1388, 01:11 صبح
mina.netعزيز ضمن تشكر بخاطر لينك هاي جالبي كه گذاشتي ولي در مورد ديتا گريد متاسفا نه بايد بگم كه نه ... حد اقل در اين مورد نبايد به اين دليل باشه چون همه سلولها داري مقدار و غير صفر ميباشند .
ولي از تعجبي كه دوست عزيزمان alimanam كرده اند كم كم دارم شك مي كنم
هم به vb.net نصب شده روي سيستم خودم و هم به ويندوز كامپيوترم

anooshiran
پنج شنبه 27 فروردین 1388, 13:33 عصر
سلام دوست عزيز

به اين كد توجه كن شايد مشكلت حل شود





Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DataGridView1.Columns("gheymat").ReadOnly = True
End Sub
Private Sub DataGridView1_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValidated
If DataGridView1.Item("tedad", e.RowIndex).Value IsNot DBNull.Value And DataGridView1.Item("fee", e.RowIndex).Value IsNot DBNull.Value Then
DataGridView1.Item("gheymat", e.RowIndex).Value = DataGridView1.Item("tedad", e.RowIndex).Value * DataGridView1.Item("fee", e.RowIndex).Value
End If
End Sub

tto_baran
دوشنبه 31 فروردین 1388, 17:39 عصر
با سلام
استاد گرامي متاسفانه اين كد هم جواب نميده و مشكل همچنان باقيست

anooshiran
دوشنبه 31 فروردین 1388, 22:40 عصر
سلام دوست عزيز

اين code ها تست شده است و جواب ميده. احتمالا اشكال از جايي ديگر بروز مي كنه. اگر امكان دارد كد برنامت رو ضميمه كن شايد مشكل حل بشه

ali_md110
پنج شنبه 03 اردیبهشت 1388, 00:48 صبح
Private Function priceradif() As Double

If Not DG.CurrentRow.Cells("col_tedad_kala").Value Is Nothing AndAlso Not (DG.CurrentRow.Cells("col_tedad_kala").Value) = 0 Then
priceradif = 0
priceradif = val(DG.CurrentRow.Cells("col_fee_kh").Value) * Val(DG.CurrentRow.Cells("col_tedad_kala").Value)
End If


Return priceradif

End Function
این تابعی است که باید در رویداد CellEndEdit یا CellValueChanged قرار بده
بدین صورت

DG.CurrentRow.Cells("col_price").Value = priceradif()

tto_baran
جمعه 18 اردیبهشت 1388, 01:48 صبح
سلام دوستان عزيز

اين مورد بد جوري وقت منو داره ميگيره . متاسفانه اين كدها فقط در صورتي كه ديتا گريد از اطلاعات جدول و ديتا ست پر نشده باشند جواب ميدن ولي در صورتي كه اطلاعات ديتا گريد از ديتا ست باشد متاسفانه مشكل بوجود مياد .

ali_md110
جمعه 18 اردیبهشت 1388, 20:37 عصر
دوست من دیتاگراید فرقی براش نمیکنه اطلاعات درونش از کجا ست از یک دیتاست میاد یا کاربر دستی وارد میکنه من که نه با دیتاگراد بایند شده مشکل داشته ام نه با غیر بایند این روشهایی که دوستان گفته اند هم به خوبی کار میکنه

tto_baran
جمعه 18 اردیبهشت 1388, 23:29 عصر
بله درست ميفرمايي اشكال كار يه جاي ديگه بود. در پيام خصوصي برا دوستم گفتم و تشكر هم كردم براي دوستاني كه اين تايپيك را ميخونند مطمئن باشند كه كدهاي ارسالي از جانب دوستان كاملا صحيح است