2009-07-09 9 views
13

एएसपी.नेट एमवीसी पेजिंग समाधानों में से अधिकांश मुझे गुगलिंग प्रतीत होता है जैसे वे एक आईनेमरेबल संग्रह के रूप में डेटाबेस तालिका से सभी पंक्तियां प्राप्त करते हैं, आईनेमरेबल संग्रह पर कुछ पेजिंग रूपांतरण करते हैं, और फिर परिणामों को वापस कर देते हैं राय। मैं डीबी पक्ष पर पेज करने में सक्षम होना चाहता हूं लेकिन पेज नंबर की गणना और एचटीएमएल पीढ़ी करने के लिए अभी भी कुछ पेजिंग क्लास है। क्या वहां कोई समाधान है जो ऐसा करता है? या वे हैं जिन्हें मैं देख रहा हूं, लेकिन मैं इसे नहीं देख रहा हूं क्योंकि मैं उन्हें गलत देख रहा हूं?क्या एएसपी.नेट एमवीसी के लिए एक पेजिंग समाधान है जो डेटाबेस में पेजिंग करता है?

यहाँ मैं किसकी तलाश में आ रहे हैं:

+0

यह वास्तव में ASP.NET MVC ... –

+0

आप सही हैं के साथ कोई संबंध नहीं है, लेकिन मैं नहीं था jvanderh और क्रेग के जवाब के बाद तक यह नहीं पता। किसी भी भ्रम के बारे में खेद है। – gabe

उत्तर

14

गुए Nerdinner नमूना देखें।

var upcomingDinners = dinnerRepository.FindUpcomingDinners(); 
var paginatedDinners = upcomingDinners.Skip(10).Take(20).ToList(); 

हालांकि FindUpcomingDinners() सभी आगामी रात्रिभोज, क्वेरी डेटाबेस पर क्रियान्वित नहीं कर रहा है हो जाता है जब तक आप अगली पंक्ति में ToList() कहते हैं। और उसके बाद 10 पंक्तियां छोड़ें और केवल
अगले 20 प्राप्त करें।

+0

में कनवर्ट नहीं करता है, मैं इसे नमूना से देखता हूं। आह, मैं देखता हूं। तुम्हारी आखिरी वाक्य ने मुझे बहुत प्रबुद्ध किया! बहुत ज्यादा! – gabe

+0

मैं आपको पूरा नमूना देखने की सलाह देता हूं, लेकिन मैंने जो लिंक प्रदान किया वह अध्याय है जो अधिक जानकारी में बताता है कि IQueryable कैसे काम करता है। – jvanderh

+0

मैं ऐसा कर रहा हूं क्योंकि हम – gabe

5

आप गलत हैं। PagedList इसे डीबी सर्वर पर करेगा, क्योंकि इसमें IQueryable एक्सटेंशन हैं।

+0

तो नियंत्रक कार्रवाई वाक्यविन्यास क्या होगा? जो कुछ भी मैं देख रहा हूं वह उत्पाद की तरह कुछ करता है रिपॉजिटरी। गेटअल प्रोडक्ट्स()। टूपेडलिस्ट (पेज इंडेक्स, पेज साइज)। – gabe

+1

हां, यह ठीक है। यह ** चयनित पृष्ठ केवल ** ** IENumerable में परिवर्तित करता है। पेजिंग IQueryable के माध्यम से डीबी सर्वर पर किया जाता है। गणना के लिए Ditto। –

+1

मेरी समस्या यह थी कि मुझे नहीं पता था कि IQueryable क्या किया था (यानी "स्थगित निष्पादन")। आपकी टिप्पणियों के साथ-साथ दूसरों ने मुझे समझने के लिए सही दिशा में इंगित किया। धन्यवाद! – gabe

3

स्कॉटगु के पास Asp.Net (एमवीसी समेत) LINQ का उपयोग करने पर एक बहुत अच्छी बहु-भाग ब्लॉग श्रृंखला है। मैं भाग 1 से शुरू होने वाली पूरी श्रृंखला को पढ़ने की अनुशंसा करता हूं, लेकिन Part 3 जो आप खोज रहे हैं उसे सटीक रूप से कवर करता है - "हमारे क्वेरी परिणाम पेजिंग" शीर्षक वाला अनुभाग विशेष रूप से डेटाबेस में पेजिंग से संबंधित है।

2

क्या @StartPage और @PageSize पैरामीटर लेने वाली संग्रहीत प्रक्रिया को लागू करने के लिए यह अधिक कुशल नहीं होगा?

इस तरह से आप केवल डेटा के सबसेट है कि वास्तव में इस्तेमाल किया जा रहा

सिर्फ एक बाहर पैरामीटर ताकि आपको पता बनाने के लिए कितने पेज लिंक और प्रत्येक लिंक ऑनक्लिक ईवेंट पारित करेंगे TOTALCOUNT या कुछ और कहा जाता है इसी तरह की है पुन: प्राप्त करने कर रहे हैं एक जावास्क्रिप्ट समारोह के लिए पृष्ठ संख्या कि एसिंक्रोनस रूप div या अधिक डेटा

आसान के साथ अन्य HTML तत्व लोड होगा

+0

पर टिप्पणी करते हैं LINQ वही चीज़() और टेक() के साथ एक ही काम करता है। यदि आपके डेटा को कई अनुप्रयोगों द्वारा एक्सेस किया जाता है तो मुझे लगता है कि एक संग्रहित प्रक्रिया एक अच्छा विचार है। अन्यथा, LINQ को कार्यान्वित करने, पढ़ने और डीबग करने के लिए बहुत आसान है। – jrjensen

संबंधित मुद्दे