سؤال

أحتاج إلى حلقة من خلال خصائص نوع كائن مخصص أعود من قاعدة البيانات ويعرض فقط الأعمدة التي تحتوي على بيانات. هذا يعني أنني لا أستطيع ببساطة ربط قائمة الكائنات إلى DataGrid. لا أريد حلاقة من خلال كل كائن ومعرفة ما إذا كان العمود فارغا / لاغيا وتحديد في UI لعرضه. ما أفكر فيه في طبقة عملي قبل أن أرسل الكائن، وأود أن أرسل ملف iEnaryerable مرة أخرى مع تلك الأعمدة التي يجب أن تكون مرئية فقط. وبالتالي كنت أفكر في استخدام LinQ للاعتراض على القيام بذلك، لكنني لست متأكدا من أن تكون جميلة جدا.

هل يعرف أي شخص بالحلول التي يمكنني استخدامها دون طن من الصور التي يمكنني القيام بها للتحقق من خلال كائن كبير (30 أو أكثر من الأعمدة) لتحديد ما يجب إظهاره أم لا.

Foreach (CustomerData customerdata in Customers) 
{ 
    if (!customerdata.address.Equals("")) 
       {
            dgvCustomerData.Column["Address"].visible = false;
         }
        //Continue checking other data columns...
}

أود أن أتجنب كل هذا في واجهة المستخدم وكل ifs ... أحصل على ضرطة الدماغ على هذا واحد يمكن لأي شخص مساعدتي؟

شكرا

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

المحلول

إلقاء نظرة على .NET مكتبات الانعكاس. وبعد يمكنك استخدام التفكير للحصول على ahold من جميع خصائص الكائن، وحلقة من خلالها لمعرفة ما إذا كانت خالية أم لا. ثم يمكنك إرجاع مجموعة من كائنات KeyValuepair حيث Key = اسم الخاصية، والقيمة = True / False. يمكنك بعد ذلك استخدام KeyValuepairs لتعيين رؤية العمود ...

نصائح أخرى

يمكنك القيام بما يلي لتبسيطه قليلا

Action<T,string> del = (value,name) => {
  if ( value.Equals("") ) {
    dgvCustomerData.Column[name].Visible = false;
  }
};
foreach ( var data in Customers ) {
  del(data.address,"Address");
  del(data.name, "Name");
  ...
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top