نقل قول: پیغام خطا موقع ویرایش
var db = new LinqToSqlDataContext();
var QEdit = db.PhoneBooks.FirstOrDefault(x=>x.ID==کد یا هر فیلد دیگری که با شرط گذاری آن مینوانید به طور مشخص و دقیق فقط یک رکورد را واکشی کنید)
QEdit.Full_Name=txtFullName.Text;
QEdit.NickName = txtNickName.Text;
QEdit.Business = txtBussinece.Text;
QEdit.Company = txtCo.Text;
QEdit.Mobil = txtMobail.Text;
QEdit.Tell = txtTell.Text;
QEdit.Fax = txtFax.Text;
QEdit.Email = txtEmail.Text;
QEdit.Web_Site = txtWebSite.Text;
QEdit.Address = txtAddress.Text;
db.SubmitChanges();
به این صورت از کل اطلاعات جدول مشخصا به یک رکورد دست پیدا خواهید کرد و بعد از ویرایش آن هم هیچ مشکلی نخواهید داشت
نقل قول: پیغام خطا موقع ویرایش
خب این خطا طبیعیه .
var QEdit = db.PhoneBooks.Single();
این کد فقط زمانی کا میکنه که فقط تو کالکشن مربوطه فقط 1 رکورد وجود داشته باشه .. اگه کالکشن خالی باشه یا بیش از 1 رکورد داشته باشه خطا میده , شما باید شرطی بزارید که کالکشن شما رو فیلتر کنه و یک رکورد برگردونه بعدش سینگلش کنید , بهتره از دستوره FirstOrDefault این دستورد رکورد اولو برمیگردونه , اگرم داده نباشه تو کالکشن null برمیگردونه و خطا نمیده .
1 ضمیمه
نقل قول: پیغام خطا موقع ویرایش
مشکل دیگه من اینکه جدول نمایش لیست من در فرمی بنام frmListPhone هست و می خوام با انتخاب رکورد مورد نظر داده ها به صفحه ای دیگه منتقل بشه،در این صورت ID رو چطوری باید چک کنم و ویراش مربوطه رو ثبت کنم؟
من ازین روش استفاده کردم:
frmListPhone flp = new frmListPhone();
int ID = int.Parse(flp.dataGridView1.CurrentRow.Cells[0].Value.ToString());
var QEdit = db.PhoneBooks.FirstOrDefault(ط=>ط.ID_Phone==ID);
ولی با خطای زیر برخورد میکنم:
ضمیمه 143743
چکار باید کنم؟ممنون میشم راهنماییم کنید
نقل قول: پیغام خطا موقع ویرایش
دوست عزیز خطای پیش اومده میتونه برا این باشه که سطری روی دیتاگرید انتخاب نشده و اصولا CurrentRow خالی هستش و Null میده، که در این صورت cells هم وجود نداره، پس خطا میده.
برای حل سوالتون هم اول سطری رو که از گرید انتخاب شده رو با همین روشی که نوشتین ID اش رو بدست بیارین و بعد اون رو به فرمی که میخوایین نمایش بده ارسال کنید و بعد اونجا با دستوری که در پست قبلی عرض کردم اطلاعات رو واکشی کنید و در باکس ها نمایش بدین و بعد از این که کاربر دکمه ذخیره رو زد اطلاعات رو در همون ابجکتی که اول واکشی کردین و پر بود ست کنید و بعد از Savechange استفاده کنید، مطمئنن ذخیره میشه.
1 ضمیمه
نقل قول: پیغام خطا موقع ویرایش
هرکاری میکنم جواب نمیده کل پروژه رو گذاشتم،میشه لطفی کنید نگاهی بندازید و ببینید مشکل از کجاست؟
باتشکر
نقل قول: پیغام خطا موقع ویرایش
سلام..مشکلش فقط این بود که id رو از فرم frmListPhone به فرم frmPhoneBook نفرستادی .. این کد رو به رویداد دابل کلیک گریدویو داخل فرم frmListPhone اضافه کن.... frmEdit.idnum = ID;
1 ضمیمه
نقل قول: پیغام خطا موقع ویرایش
نقل قول:
نوشته شده توسط
hamed_611
سلام..مشکلش فقط این بود که id رو از فرم frmListPhone به فرم frmPhoneBook نفرستادی .. این کد رو به رویداد دابل کلیک گریدویو داخل فرم frmListPhone اضافه کن.... frmEdit.idnum = ID;
باسپاس فروان از راهنماییتون.
فقط راهنماییه آخر اگه بخوام در فرم frmPhoneBook بجای استفاده از idnum از روش زیر استفاده کنم چجوری باید انجامش بدم:
private void InsertEdit_Click(object sender, EventArgs e)
{
var db = new LinqToSqlDataContext();
frmListPhone flp = new frmListPhone();
int ID = int.Parse(flp.dataGridView1.CurrentRow.Cells[0].Value.ToString());
var QEdit = db.PhoneBooks.FirstOrDefault(x => x.ID_Phone == ID);
QEdit.Full_Name=txtFullName.Text;
QEdit.NickName = txtNickName.Text;
QEdit.Business = txtBussinece.Text;
QEdit.Company = txtCo.Text;
QEdit.Mobil = txtMobail.Text;
QEdit.Tell = txtTell.Text;
QEdit.Fax = txtFax.Text;
QEdit.Email = txtEmail.Text;
QEdit.Web_Site = txtWebSite.Text;
QEdit.Address = txtAddress.Text;
db.SubmitChanges();
cChengControls.ResetControls(this);
}
یعنی idnum رو کلاً حذف کنم،حتی این خط رو:
frmListPhone flp;
public int idnum
{
get;
set;
}
باز ضمیمه رو با تغییراتی که در بالا گفتم گذاشتم.
باتشکر از شما دوست عزیز