استخدام DataPager دون استرداد كافة الصفوف في كل طلب

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

  •  06-07-2019
  •  | 
  •  

سؤال

لدي ListView أقوم بربط البيانات بمجموعة من الكائنات مثل هذا:

int total;
List<Client> clientList = 
    clientData.GetClients(criteria, pageNum, pageSize, out total);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

حيث تقوم معلمات pageNum وpageSize والإجمالي بتسهيل الترحيل في طبقة الوصول إلى البيانات.حتى الان جيدة جدا.

يمكنني الآن طرح DataPager على الصفحة، وتوجيهه إلى ListView والحصول على تجربة مستخدم مناسبة للترحيل. هناك ما هو أكثر قليلاً عندما تقوم بالربط برمجيًا بدلاً من الارتباط التصريحي باستخدام عنصر تحكم مصدر البيانات, ولكن المشكلة هنا هي أن DataPager يتوقع استرداد مجموعة النتائج بأكملها في كل مرة، والتي يجب أن يحسب منها ترقيم الصفحات، لذلك يرى الصفحة الفردية للنتائج التي تم إرجاعها كإجمالي السجلات المتاحة ويتم عرضها كما لو كان هناك واحد فقط صفحة النتائج المتاحة.بمعنى آخر، يعمل السيناريو أعلاه بشكل جيد مع DataPager إذا قمنا بالتبديل إلى إصدار غير قابل للترحيل من GetClients:

List<Client> clientList = clientData.GetClients(criteria);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

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

لم أجد طريقة سهلة للقيام بذلك ولم أعثر على أي شيء في عمليات البحث.من المسلم به أنني لا أملك حاليًا فهمًا عميقًا لتنفيذ DataPager، لذا آمل أن أتجاهل شيئًا ما.

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

المحلول

وأنت لم يغفل أي شيء.

عند التعامل مع مجموعات نتائج كبيرة تحتاج إلى تشغيل ترحيل قبالة وإضافة عناصر التحكم الترحيل الخاصة بك.

في تجربتي << <> >> تكفي. لا أحد يذهب الماضي صفحة 3RD على أي حال.

نصائح أخرى

قم بإلقاء نظرة على ListViewPagedDataSource وملفه السماح للخادم ترحيل الصفحات الملكية، أعتقد ذلك يمكن كن ما تبحث عنه ..

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