كيفية حذف صف من GridView باستخدام بيانات غير مرئية؟

StackOverflow https://stackoverflow.com/questions/205278

  •  03-07-2019
  •  | 
  •  

سؤال

أنا أكتب نموذجًا أوليًا بسيطًا للواجهة الأمامية باستخدام GridView الذي يتم ملؤه عبر الوظيفة، بدلاً من ربطه مباشرة بمصدر بيانات SqlServer.

حتى أتمكن من حذف صف/سجل من الشبكة/قاعدة البيانات الأساسية التي أستخدمها حاليًا

  1. تعيين AutoGenerateDeleteButton = true
  2. عرض معرفات السجل الفريدة في العمود الأول
  3. التعامل مع حدث RowDeleting
  4. الحصول على المعرف عن طريق الحصول على الشبكة.Rows[e.RowIndex].Cells[idIndex].Text
  5. تمرير هذا الرقم إلى وظيفة تقوم بالحذف

يبدو أن هذا يعمل بشكل جيد، لكنني أفضل عدم عرض المعرفات للمستخدمين لأنها لا تعني شيئًا بالنسبة لهم.

لقد حاولت تعيين الخاصية "مرئي" لعمود المعرف على "خطأ"، ولكن هذا تسبب في قيام الخطوة 4 أعلاه بإرجاع سلسلة فارغة - وبالتالي لم يتم حذف أي سجل.

فكيف أقوم بتخزين رقم الهوية المخفي مع كل صف؟

أم أنني سأقوم بهذا بطريقة خاطئة تمامًا؟

متابعة الإجابات:

شكرًا على كلا الإجابتين، وانتهى الأمر بالسير على طريقة Eric's DataKeyNames.بالنسبة للأشخاص الآخرين الجدد على ASP.NET مثلي، الخطوات التي استخدمتها

  • أضفت بين السطور التي قمت فيها بتعيين DataSource للشبكات ودعا DataBind ().

    grid.DataKeyNames = new string[] {"id"};

  • ثم في وظيفة التعامل مع RowDeleting حصلت على هويتي باستخدام

    grid.DataKeys[e.RowIndex].Value

هل كانت مفيدة؟

المحلول

يحتوي GridView على خاصية DataKeyNames.عندما تقوم بربط مصدر بيانات بالشبكة، فإنك تقوم بتعيين DataKeyNames (عادةً باسم واحد فقط، وهو حقل PK الخاص بك).لا يمكنك إظهار PK، ولكن يمكنك الوصول إليه من الكود الخلفي.

نصائح أخرى

Visible=false تعني عدم العرض على الصفحة.ما تريده هو إما جعله حقل قالب واستخدام HiddenField للاحتفاظ بالقيمة أو تعيين النمط في عنصر التحكم على "عرض:لا أحد؛".سيكون هذا هو الحال إذا كان رمز جانب العميل يحتاج إلى الوصول إلى قيمة مكالمة Ajax أو شيء من هذا القبيل.

بخلاف ذلك، استخدم خاصية DataKeyNames كما يقترح @Eric Z Beard.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top