التحقق من عشرين قيمًا ، مربعات نصية مقابل DataColumns ، خوارزمية

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

سؤال

حسنًا ، أدمغة كبيرة هنا شيء يمثل تحديًا أكثر من المتطلبات. أنا متعثر قليلاً. عادة ما أحتاج فقط إلى حث في الاتجاه الصحيح ، لذا اجعل عصي الحث جاهزة.

لدي tabcontrol مغطى في مربعات النص. أرغب في إجراء فحص لمحتويات جميع مربعات النصوص خلال الحدث المحدد على electedexchanged على ListView على نفس النموذج. إذا كان لدى أحد مربعات النص بيانات مختلفة عن صف قابل للتصميم - يمثله عنصر ListView - أريد أن يسأل ما إذا كان المستخدم يرغب في الحفاظ على التغيير الذي قاموا به للتو. إذا لم يتغير شيء ، فأنا أريد أن يغير الاختيار.

من الواضح أنني أقارن محتويات مربعات النص مقابل الأعمدة المرتبطة في dataRow.

يمكنني فقط أن أجبر الشيك والقيام بكل فرد تحقق واحدًا في كل مرة. أفضل التوصل إلى طريقة خوارزمية ذكية لركوب الدراجات من خلال مربعات نص TabControl والتحقق من القيم مقابل القيم العمودية.

أي اقتراحات؟

تحرير: أحب حل "مربعات النص المسمى بذكاء" أدناه أفضل ، على الرغم من أن كلاهما جيد. إذا لم يكن لدى أي شخص آخر فكرة أفضل في الـ 14 يومًا القادمة ، فإن إجابة مربع النص تحصل على اللون الأخضر.

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

المحلول

امنح مربعات النص اسمًا ذكيًا كما هو الحال في جزء من الاسم هو اسم العمود/الصف.

تجميع مربع النص يتحكم في حلقة من خلالها. لكل عنصر تحكم ، احصل على اسم (الجزء) واستخدمه كمرجع إلى DataTable. تحقق من القيم.

نصائح أخرى

إذا كنت أفهمك بشكل صحيح ، فأنت تريد تجنب مقارنة كل مربع نص على كل تغيير ، لصالح التحقق من مربعات النصوص التي يتم تغييرها ، مدفوعة بحدث SelectIndExchanged من عنصر تحكم ListView. هل هذا صحيح؟

حسنًا ، لدى DataRows و DataTables بالفعل إصدار صفوف وتراجع عن صفوف ، لذلك إذا قمت بربط مربعات النص بالصف الأساسي (إما عن طريق كتابة الأحداث للكتابة على التغيير/فقدان التركيز أو باستخدام آلية آلية لإنجاز نفس المهمة) ، ثم تحقق من خاصية RowState على محدد. إذا كان Rowstate أي شيء آخر غير المتغير ، فطالب المستخدم بالحفظ. إذا أنقذ ، ارتكب التغييرات ، وإلا رفضها.

لذا ، على سبيل المثال ، تريد شيئًا كهذا في معالج الأحداث المختارة من CherowerIndexChanged:

if (row.RowState == DataRowState.Modified) {
  // prompt for user input
  if (promptResult == PromptResult.Save) {
    row.AcceptChanges();
  }
  else {
    row.RejectChanges();
  }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top