PDA

View Full Version : اعمال تغییرات در دیتاگرید ویو با دیتا آداپتور



pluschild
چهارشنبه 14 بهمن 1388, 11:22 صبح
سلام دوستان . من یک datagridview دارم که داخلش اطلاعات یه جدول رو نشون می دم . چکار بکنم تا وقتی کاربر داده های datagridview رو ویرایش می کنه ، تغییرات در جدول اصلی هم اعمال بشه ؟
من این کدها رو می نویسم :


SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True");
SqlCommand comm = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
comm.CommandText = "SELECT * FROM Phone";
comm.CommandType = CommandType.Text;
comm.Connection = conn;
da.SelectCommand = comm;
da.Fill(ds,"Phone");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Phone";
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
و برای آپدیت این کد رو :

da.Update(ds, "Phone");اما این خطا رو می گیره :


InvalidOperationException was unhandled
Update requires a valid UpdateCommand when passed DataRow collection with modified rows.تو رو خدا کمک کنید کارم گیره .
تمام پست ها رو هم خوندم اما جوابی نگرفتم که مشکلم رو حل کنه چون همشون رو امتحان کردم .

pluschild
چهارشنبه 14 بهمن 1388, 21:31 عصر
یعنی یه نفر پیدا نمی شه کار ما رو راه بندازه ؟

majid325
پنج شنبه 15 بهمن 1388, 01:46 صبح
شما یک کوئری select فقط به da معرفی کردین , در صورتی که برای هر نوع عملی(delete,Update,insert,select) باید یک کوئری به command مربوطش در da معرفی کنین. من تاپیک های مرتبط به این موضوع رو قبلا تو سایت دیدم .سرچ کنید

jahanmanesh
پنج شنبه 15 بهمن 1388, 08:59 صبح
سلام دوست گرامي.


شي ديتاست متدي داره به نام ()haschanges
شما 2تا كار بايد بكني.
1.اول براي (insert,delete,update,select) دستورات رو بنويسي.
2.بعد مياي چك ميكني كه اگه كاربر تغيراتي روي ديتاست انجام داده اونا رو توو يه ديتاست جديد ميريزي.بعد با ديتاآداپتور ديتاست جديد رو آپديت ميكني توو پايگاه اصليت





if datasetasli.haschanges() then
'datasetchanges ,dataset jadidemoon baraye zakhire taghirate rooy datasetasli hastesh.

datasetchanges=datasetasli.getchanges()
dataAdaptor1.update(datasetchanges,"namejadval")
end if




توو يه ديتاست جديد ميريزي كه بعد اگه خواستي به كاربر نشون بدي تغيرات اعمال شده رو،اگه قبول داشت تغيرات رو بعد تغيرات ذخيره بشه توو پايگاه اصلي(وگرنه ميتونستي يه ضرب از ديتاست اصليت وارد پايگاهت بكنيشون)

majid325
پنج شنبه 15 بهمن 1388, 15:04 عصر
عنوان تاپیک تغییر کرد, در صورت تکرار تاپیک مربوطه حذف میشود.