Qarshi davlat universiteti matematika va kompyuter ilmlari fakulteti amaliy matematika kafedrasi




Download 2,84 Mb.
bet10/12
Sana21.05.2024
Hajmi2,84 Mb.
#249261
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
Kurs ishi namuna

1.6.2. Ma'lumotlarni tahrirlash.


Biz allaqachon satrlarni tahrirlash mavzusiga to‘xtadik va ushbu bobda biz ushbu mavzuni chuqurroq ko‘rib chiqishimiz kerak. Shunday qilib, quyidagi kodni yozish tugmachasini bosib, formani ustiga bosing:
private void editButton_Click(object sender, EventArgs e)
{
// yozuvlar sonini tekshiring
if(table.Rows.Count == 0)
return;

DataRow row = table.Rows[0]; // biz nol chiziqni olamiz


row[1] = “Сахар”; // birinchi maydonning qiymatini o‘zgartirish
}

Avval jadvalda biron bir yozuv mavjudligini tekshiramiz. Agar satrlar to‘plamidagi elementlar soni nolga teng bo‘lsa, unda tahrirlash uchun hech narsa yo‘q. Agar yozuvlar bo‘lsa, unda biz nol qatorni olamiz va birinchi maydonning qiymatini o‘zgartiramiz.


Ma'lumotni o‘zgartirganda DataTable jadvali ma'lumotlarning holatini kuzatishga imkon beradigan quyidagi hodisalarni keltirib chiqaradi:



  • ColumnChanged - ustun har doim o‘zgarganida, voqea sodir bo‘ladi;

  • ColumnChanging - Ustundagi qiymat o‘zgarishi hozirgi vaqtda o‘zgarmoqda va o‘zgarish hali ham bekor qilinishi mumkin;

  • RowChanged - chiziqdagi qiymat yoki chiziqning holati o‘zgargan;

  • RowChanging - satrdagi qiymat yoki satrning holati hozirgi vaqtda o‘zgaradi.

Ushbu hodisalarning barchasi har safar yaratiladi. ma'lumotlarni o‘zgartirganda, shu sababli cheklovlarsiz amalga oshirib bo‘lmaydigan ma'lumotlarning to‘g‘riligi bo‘yicha qo‘shimcha tekshiruvlarni olib keladigan voqea ishlov beruvchisini ularga osib qo‘yish qulay. Ammo, agar chek birdaniga ikkita chiziqqa ta'sir qilsa va foydalanuvchi ularni bir vaqtning o‘zida o‘zgartirishi kerak bo‘lsa nima bo‘ladi? Foydalanuvchi faqat birinchi qatorni o‘zgartirgan, ammo ikkinchi tegmaganligini qanday tekshirish mumkin?


Ushbu vaziyatni tasvirlash uchun men bank operatsiyalari bo‘yicha misol keltirmoqchiman. Masalan, bitta satrdan ma'lum miqdordagi pulni olib, boshqa qiymatga qo‘shishingiz kerak. Pulni olib qo‘ygandan so‘ng, miqdor o‘zgaradi va tekshirish tetiklari ishlamasligi mumkin. Ushbu muammoni hal qilish uchun har ikkala satrni tahrirlash rejimiga qo‘yishingiz mumkin, ularning har biri uchun BeginEdit usulini chaqirib) va pul o‘tkazmalarini amalga oshirishingiz mumkin.


BeginEdit () usulini chaqirgandan so‘ng, ma'lumotlar o‘zgarishi hodisalari yaratilmaydi. Siz qiymatlarni sozlashingiz mumkin, va EndEdit () usulini chaqirgandan so‘ng amalga oshirilgan o‘zgarishlar darhol boshlanadi. Mantiqni quyidagi misol bilan ko‘rsatish mumkin.

Table.BeginEdit();


// keyingi o‘zgarish voqealari yaratilmaydi

DataRow row = table.Rows[1]; // biz birinchi qatorni olamiz


Row[1] -=10; // 1-maydon qiymatini kamaytiring

DataRow row table.Rows[2]; // biz ikkinchi qatorni olamiz


Row[1] += 10; // 2-chi maydonning qiymatini oshiring

Table.EndEdit(); // voqealar bu erda yaratiladi


// keyingi o‘zgarish voqealari yana yaratila boshlaydi
EndEdit () usulini chaqirganda, har ikki o‘zgarish uchun darhol - satr va 2-qator uchun hodisalar hosil bo‘ladi.

Download 2,84 Mb.
1   ...   4   5   6   7   8   9   10   11   12




Download 2,84 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Qarshi davlat universiteti matematika va kompyuter ilmlari fakulteti amaliy matematika kafedrasi

Download 2,84 Mb.