PDA

View Full Version : ویرایش و حذف رکورد با بیندیگ سورس



Mrs.Net
یک شنبه 30 مهر 1385, 16:11 عصر
من یک فرم درست کردم و یک دیتاست از یک بانک به اون دادم و با استفاده از یک بیندینگ سورس تمام تکست باکسهای فرم رو به دیتاستم بایند کردم.
برای کلید new از adapter.insert استفاده کردم.
اما برای کلیدهای edit و delete نمیدونم چجوری باید عمل کنم؟
این کد نوشتم اما خطا میگیره و میگه موقع استفاده از datarow باید شکل درست استفاده کنی. احتمالا باید یجوری مشخص بشه کدوم رکورد ویرایش (یا حذف) باید بشه
ممنون اگه کامل برام توضیح بدهید


private void btnEdit_Click(object sender, EventArgs e)
{
DataRow row = ((DataRowView)bindingSource1.Current).Row;
if (row.RowState == DataRowState.Modified)
table1TableAdapter.Update(row);
}

shahab_ss
یک شنبه 30 مهر 1385, 22:00 عصر
سلام

اگه دنبال یک جواب ساده و کار آمد هستی من یه راه پیشنهاد میکنم:
اجازه بده C# DataWizard همه کارهارو انجام بده و خودت رو درگیر نکن.
نام Table رو از لیست DataSource هات Drag کن روی فرم...خب با همین کار ساده تقریبا کار تمومه !!!
فقط میمونه یه کار کوچولو و اون اینه که شما یک خط کد برای Update کردن دیتاست انجام بدی.
این Update میتونه شامل اعمال حذف (ها) تغییر(ها)وثبت رکورد(های) جدید باشه.


this.Validate();
this.BindingSource.EndEdit();
this.TableAdapter.Update(this.DataSet.Table);

shahab_ss
یک شنبه 30 مهر 1385, 22:28 عصر
این هم یه مثال کوچولو

Mrs.Net
یک شنبه 30 مهر 1385, 23:51 عصر
ممنون از جوابت. اما من میخوام فقط یک رکورد آپدیت بشه
با کد شما تمام رکوردها آپدیت میشن که ممکنه سرعت پایین بیاد!

این خط
this.Validate();
چیکار میکنه؟

shahab_ss
دوشنبه 01 آبان 1385, 06:55 صبح
مورد اول : نه اینطور نیست. درواقع عملآ فقط رکورد هایی Update میشه که تغییر کرده باشه که خود Wizard این رو از مقایسه دیتاست شما با اطلاعات اصلی پیدا میکنه ( من با حجم بالای دیتا هم تست کردم و مشکلی ندیدم)

اما this.validate() کارش چک کردن اعتبار مقادیر وارد شده برای فیلد های دیتاست هست.(البته تا اونجایی که من میدونم )

Mrs.Net
پنج شنبه 04 آبان 1385, 10:01 صبح
ممنون
فقط همین راه هست؟

shahab_ss
پنج شنبه 04 آبان 1385, 23:16 عصر
راه دیگه اینه که کنترل هات رو اصلا Bind نکنی و برای هر کاری که میخای انجام بشه مستقیمآ کد SQL رو جایگزین کنی.

Mrs.Net
شنبه 06 آبان 1385, 12:09 عصر
نه اون راه و میدونم
برای استفاده از بایند کردن پرسیدم.

من هم مثل کد برنامه نمونه شما انجام دادم اما روی خط update این اشکال رو میگیره:

Update requires a valid UpdateCommand when passed DataRow collection with modified rows.

کد هم به این شکل هست؟


private void btnEdit_Click(object sender, EventArgs e)
{
this.Validate();
this.bindingSource1.EndEdit();
this.table1TableAdapter.Update(myDatabaseDataSet.T able1);
}

shahab_ss
شنبه 06 آبان 1385, 22:38 عصر
سلام
این نمونه یکی از فرم های یک برنامه حسابداریه که مدتها پیش نوشتم
توی این نمونه همه اون کارهایی که دنبالش هستی رو پیدا میکنی .فکر میکنم که کد اصلی رو از CodeProject.com گرفته بودم... درست یادم نیست !!
به هرحال امیدوارم که این کد به درد شما و بقیه دوستان که مشکل مشابه دارن بخوره.