WinForms -da Entity Framework. 1 -qism


EntityBindingList sinfiga o'radi


Download 0.62 Mb.
bet5/6
Sana15.03.2023
Hajmi0.62 Mb.
#1270862
1   2   3   4   5   6
Bog'liq
Entity Framework в WinForms

EntityBindingList sinfiga o'radi.
O'zgarishlarni saqlash

Ma'lumotlarni tahrir qilgandan so'ng, ehtimol siz o'zgarishlarni ma'lumotlar bazasiga saqlashni xohlaysiz. Buni qanday amalga oshirish mumkinligini ko'rsatish uchun formaga uchta tugma qo'shing va ularning Matn xususiyatini " Saqlash ", " Bekor qilish " va " Yangilash " ga o'rnating va ushbu tugmalarni



bosish hodisalariga quyidagi ishlov beruvchilarni biriktiring:
// ma'lumotlar manbasidagi o'zgarishlarni saqlash/bekor qilish/yangilash
void _btnSave_Click ( ob'ekt jo'natuvchisi, EventArgs e)
{
entityDataSource1.SaveChanges();
}
void _btnCancel_Click ( ob'ekt jo'natuvchisi, EventArgs e)
{
entityDataSource1.CancelChanges();
}
void _btnRefresh_Click ( ob'ekt jo'natuvchisi, EventArgs e)
{
entityDataSource1.Refresh();
}

Ushbu kod o'z-o'zidan tushunarli. Birinchi tugma barcha o'zgarishlarni ma'lumotlar bazasiga saqlaydi. Ikkinchisi ma'lumotlarni qayta olish orqali o'zgarishlarni bekor qiladi, uchinchisi esa o'zgarishlarni saqlaydi va ma'lumotlarni qayta oladi.

Ko'pincha unutiladigan bitta muhim tafsilot bor: ma'lumotlar bazasiga o'zgarishlarni saqlashda istisnolar paydo bo'lishi mumkin. Masalan, ma'lumotlar bazasining yaxlitligini buzadigan o'zgarishlarni saqlashda. Afsuski, ushbu turdagi istisno bilan kurashish uchun umumiy retseptlar mavjud emas. Ularning tabiati ma'lumotlar bazasi sxemasiga va dasturning o'ziga bog'liq.

Mumkin bo'lgan istisnolar bilan qanday kurashishni rejalashtirganingizdan qat'i nazar, birinchi narsa ularni qo'lga olishdir. Buni amalga oshirish uchun SaveChanges usuli chaqiruvini try / catch bloki bilan o'rashingiz yoki EntityDataSource komponentiga DataError hodisasi ishlov beruvchisini qo'shishingiz kerak . Ilovamiz ma'lumotlarni saqlashda yuzaga kelishi mumkin bo'lgan xatolarni shunday hal qila oladi:

// har qanday xato haqida xabar bering
void entityDataSource1_DataError( ob'ekt jo'natuvchisi, DataErrorEventArgs e)
{
MessageBox. Ko'rsatish ("Xato aniqlandi:\r\n" + e. Istisno .Xabar);
entityDataSource1.CancelChanges();
e.Handled = true ;
}

Kod ogohlantirish beradi, o'zgarishlarni bekor qiladi va xatolik allaqachon ko'rib chiqilganligini va hech qanday istisnolar bo'lmasligi kerakligini ko'rsatish

uchun Handled parametrini True ga o'rnatadi.
Tegishli ob'ektlarni ifodalash uchun lug'at qidiruvidan foydalanish

Ushbu misolni tugatish uchun odatiy stsenariyni ko'rib chiqaylik. Mahsulot klassi oʻzaro bogʻliq boʻlgan ikkita xususiyatga ega: Turkum va Yetkazib beruvchi . Odatiy bo'lib, bu xususiyatlar jadvalda ko'rsatilmaydi, lekin ustun muharriridan foydalanib, jadvalimizga ushbu ob'ektlar uchun ustunlar qo'shishimiz mumkin. Quyidagi rasmda buni qanday qilish mumkinligi ko'rsatilgan:



Muammo shundaki, DataGridView tegishli ob'ektni qanday ko'rsatishni bilmaydi, standart usul oddiygina ToString va natijada biz ikkita faqat o'qish uchun ustunni olamiz, ularning hujayralari “ Sample .Category ” va “ Sample. Supplier ” qiymatlari bilan to'ldirilgan .

Lekin haqiqiy ishni bajarish uchun sizga toifalar va sotuvchilar nomlarini ko'rsatadigan ustun kerak, ideal holda ro'yxatlardan tanlash orqali toifalar va sotuvchilarni tahrirlash imkonini beruvchi muharrir. Bu odatda maxsus ustunlarni yaratish va bog'lash uchun kod yozish orqali amalga oshiriladi ( agar DataGridView boshqaruvidan foydalanayotgan bo'lsangiz DataGridViewComboBoxColumn da ).

Chunki bu keng tarqalgan stsenariy, EntityDataSource komponenti AutoLookup kengaytirilgan xususiyatini qo'llab-quvvatlaydi . Bu xususiyat shaklga o'rnatilgan har qanday DataGridView yoki C1FlexGrid boshqaruvida avtomatik ravishda mavjud bo'ladi ( C1FlexGrid -da bu DataGridView ga qaraganda tezroq va murakkabroq jadvalli ma'lumotlarni ko'rishning mashhur komponentidir ).

Esda tutingki , EntityDataSource komponenti C1FlexGrid ni qo'llab-quvvatlasa ham , EFWinForms yig'ilishi C1FlexGrid yig'ilishidan mustaqildir. Bunga " dinamik " kalit so'zi yordamida erishiladi , bu asosan ish vaqtida xususiyatlarni bog'lash uchun aks ettirishga tayanadi. Xuddi shu mexanizm EntityDataSource loviyasini boshqa jadvalli ma'lumotlarni ko'rish fasollarida qo'llab-quvvatlash uchun kengaytirish uchun ishlatilishi mumkin.

Quyidagi rasmda qanday qilib buni amalga oshirishingiz mumkinligi ko'rsatilgan . DataGridView -da AutoLookup xususiyatini yoqing : AutoLookup



xususiyatini yoqganingizdan so'ng, EntityDataSource komponenti ob'ekt bilan bog'langan ustunlarni ma'lumotlarga asoslangan tahrirlanadigan ustunlar bilan almashtirish uchun jadvaldagi ustunlarni avtomatik ravishda skanerlaydi. xarita ”, tegishli ob'ektlarning mumkin bo'lgan qiymatlari ro'yxatini va ularning har biri uchun qiymatlarning xaritalarini o'z ichiga oladi.

Quyidagi rasmda AutoLookup xususiyatini True ga oʻrnatish natijasi koʻrsatilgan :

“ Kategoriya ” va “ Yetkazib beruvchi ” ustunlarida toifa nomlari va yetkazib beruvchi nomlari qanday koʻrsatilganiga eʼtibor bering va siz mahsulot uchun yetkazib beruvchini shunchaki yangisini tanlash orqali oʻzgartirishingiz mumkin. ro'yxati.




Download 0.62 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling