PDA

View Full Version : ویرایش و حذف اطلاعات جستجو شده در DataSet



M.Soroor
جمعه 03 اسفند 1386, 13:03 عصر
من یک جدول دارم به نام Info و دو فیلد به نام های name , family
در Form1 دو TextBox به نام های txtName1 , txtFamily1 دارم و یک کلید جستجو (btnSearch)
در Form2 هم یک DataGrid و دو TextBox به نام های txtName2 , txtFamily2 دارم و یک کلید ویرایش (btnEdit) و یک کلید حذف (btnDel)

وقتی کاربر در فرم1 یکی یا هر دو TextBox رو با مقدار دلخواه پر می کنه و برروی جستجو کلیک می کنه فرم2 نمایش داده میشه و در DataGrid نتایج جستجو نمایش داده میشه
کد مربوط به جستجو در رویداد لود Form1:


Me.InfoTableAdapter.Fill(Me.DataSet1.Info)
objDataView = New DataView(DataSet1.Tables("Info"))

name = "name LIKE " + "'%" + Form1.txtname1.Text + "%'"
family = "family LIKE " + "'%" + Form1.txtfamily1.Text + "%'"
objDataView.RowFilter = name + " AND " + family
DataGrid1.DataSource = objDataView
DataGrid1.Refresh()
جستجو بدون هیچ مشکلی انجام میشه اما:
1. من میخوام در Form2 وقتی یک سطر از جدول رو در DataGrid انتخاب می کنم اطلاعات این سطر در TextBoxهای txtName2 , txtFamily2 نمایش داده بشه
چون DataGrid1.DataSource = objDataView قرار دادم اطلاعات در TextBoxها نمایش داده نمیشه، چوم می خواستم نتایج جستجو در DataGrid نمایش داده بشه
2. بعد از انتخاب سطر مورد نظر در DataGrid، از چه کدی برای ویرایش اطلاعات استفاده کنم؟ در رویداد کلیک btnEdit)
3. بعد از انتخاب سطر مورد نظر در DataGrid، از چه کدی برای حذف اطلاعات استفاده کنم؟ (در رویداد کلیک btnDel)

من قبلآ این کارها رو با کد نویسی و دستورات SQL انجام دادم
حالا می خوام با استفاده از DataSet این کار رو انجام بدم چون کد نویسی کمتری داره
یعنی تغییرات در DataSet انجام بشه و بعد از پایان تغییرات این تغییرات برروی دیتابیس اعمال بشه
البته برای اضافه کردن رکورد در این روش مشکلی ندارم

ممنون میشم از راهنماییتون:لبخندساده:

ghafoori
جمعه 03 اسفند 1386, 13:39 عصر
برای سوال اول تکس باکس ها را هم به dataview بایند کن
برای سوال دوم وقتی تکس باکس ها به دیتاویو وصل باشند با ویرایش انها اطلاعات را می توانید ویرایش کنید البته بعد باید بانک را بروز کنید
برای سوال سوم وقتی کاربر سطری را داخل گرید انتخاب کرد و دکمه حذف را زد سطر جاری را با کد مثل این حذف کن


Dim d As DataGridView
d.Rows.RemoveAt(d.CurrentRow.Index)

M.Soroor
جمعه 03 اسفند 1386, 15:55 عصر
برای Bind کردن TextBoxها از این کد استفاده کردم:


txtname.DataBindings.Add("Text", objDataView, "name")
که به خوبی عمل کرد
اما از همین کد برای نمایش عکس استفاده کردم:


PictureBox1.DataBindings.Add("Image", objDataView, "pic")
که این خطا رو داد:
Cannot format the value to the desired type

من از روش DataSet عکس ها رو در جدول ذخیره کردم:


InfoBindingSource.AddNew()

InfoBindingSource.EndEdit()
InfoTableAdapter.Update(DataSet1)
عکس ها در DataGrid به خوبی نمایش داده می شوند ولی نمی تونم روی فرم نمایش بدم
آیا کد من برای Bind کردن PictureBox به DataView اشتباه است؟

M.Soroor
شنبه 04 اسفند 1386, 14:22 عصر
یعنی هیچ راهی برای انجام این کار وجود نداره؟ :افسرده: :گریه:

Alireza_Salehi
یک شنبه 05 اسفند 1386, 07:04 صبح
به جای کد خودتون این را بنویسید:

PictureBox1.DataBindings.Add("Image", objDataView, "pic",True)

M.Soroor
یک شنبه 05 اسفند 1386, 08:19 صبح
آقای صالحی و جناب ghafoori بسیار بسیار ممنون و متشکر
خیلی گیر این کار بودم

انشاالله به هرچی که می خواید برسید
حیف که دکمه تشکر رو یک بار بیشتر نمیشه زد

بازم ممنون
موفق و پایدار باشید