البرمجة

تحديث قيم الفواتير في DataGridView باستخدام خاصية Tag

فيما يتعلق بالشيفرة التي قدمتها، يبدو أنك قد قمت بتحديد سعر الفاتورة إلى صفر (0.00) عندما يتم تحديد خانة الاختيار (checkbox)، ولكن عند إلغاء تحديد الخانة، ترغب في استعادة القيمة السابقة للسعر. لتحقيق ذلك، يمكنك الاحتفاظ بقيمة السعر السابقة في كل صف عندما يتم تحديدها لأول مرة. يمكنك تحقيق ذلك باستخدام خاصية Tag لكل خلية في العمود الخاص بالسعر.

فيما يلي تعديل للكود الخاص بك يستخدم خاصية Tag لتخزين القيمة السابقة للسعر:

csharp
private void grvItems_CellContentClick(object sender, DataGridViewCellEventArgs e) { var senderGrid = (DataGridView)sender; DataGridViewRow row = this.grvItems.CurrentRow; if (e.RowIndex >= 0) { if (senderGrid.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn && e.RowIndex >= 0) { if (e.ColumnIndex == grvItems.Columns["UnderWarranty"].Index) { string returnAmt = lblReturnAmountVal.Text; bool isChecked = (bool)grvItems.Rows[e.RowIndex].Cells["UnderWarranty"].EditedFormattedValue; if (isChecked) { // حفظ القيمة السابقة في خاصية Tag grvItems.Rows[e.RowIndex].Cells["PRICE"].Tag = grvItems.Rows[e.RowIndex].Cells["PRICE"].Value; grvItems.Rows[e.RowIndex].Cells["PRICE"].Value = "0.00"; lblReturnAmountVal.Text = "0.00"; } else { // استعادة القيمة السابقة من خاصية Tag grvItems.Rows[e.RowIndex].Cells["PRICE"].Value = grvItems.Rows[e.RowIndex].Cells["PRICE"].Tag; } grvItems.EndEdit(); } } } }

بهذا التعديل، يتم تخزين القيمة السابقة للسعر في خاصية Tag عندما يتم تحديد الخانة، وعند إلغاء تحديد الخانة، يتم استعادة القيمة من خلال قراءة القيمة المخزنة في Tag.

المزيد من المعلومات

لفهم أفضل للحل الذي تم توفيره، دعونا نقوم بتوضيح بعض النقاط الرئيسية في الشيفرة:

  1. استخدام خاصية Tag: تم استخدام خاصية Tag لتخزين القيمة السابقة للسعر. هذا يسمح بحفظ معلومة إضافية مرتبطة بكل خلية في العمود.

  2. تعديل السعر عند التحقق من الخانة: عندما يتم تحديد الخانة (checkbox)، يتم تعيين قيمة السعر إلى “0.00” ويتم حفظ القيمة السابقة في Tag.

  3. استعادة القيمة السابقة عند إلغاء تحديد الخانة: عندما يتم إلغاء تحديد الخانة، يتم استعادة القيمة السابقة للسعر من Tag وتعيينها كقيمة جديدة للسعر.

  4. نهاية التحرير (End Edit): تم استدعاء grvItems.EndEdit() للتأكيد على نهاية عملية التحرير بعد التعديلات.

  5. تحقق من العمود المناسب: يتحقق الشيفرة من أن العملية تتم عند الضغط على خانة الاختيار في العمود المناسب باستخدام e.ColumnIndex.

بهذه الطريقة، يمكنك ضمان حفظ واستعادة القيمة السابقة للسعر بناءً على حالة الخانة. يمكنك أيضاً توسيع هذا المفهوم لتخزين معلومات إضافية في Tag إذا كان هناك حاجة لمزيد من التفاصيل لكل صف.

زر الذهاب إلى الأعلى