2009-02-19 6 views
11

मैं एएसपी.नेट की GridView पेजिनेशन यांत्रिकी को समझने की कोशिश कर रहा हूं, इसलिए मैं अपनी कंपनी के घर-ब्रूड मैनुअल पेजिनेशन दिनचर्या के बजाय ढांचे की मूल कार्यक्षमता का उपयोग कर सकता हूं जो कार्यान्वित करने के लिए बहुत सारे काम करता है।डेटासॉर्स पूर्ण परिणाम सेट वापस नहीं करता है जब मैन्युअल रूप से एक ग्रिड व्यू पेजकाउंट सेट करते हैं?

मैंने अपनी वेब सेवाओं के साथ काम करने के लिए GridView की पेजकाउंट संपत्ति को प्राप्त करने के अलावा सब कुछ पता लगाया है। वर्तमान में, हमारी वेब सेवाओं की तरह कुल रिकॉर्ड गिनती लौटने के बाद:

public object[] GetStuffMethod(int pageNum, int recordsPerPage, out int totalRecords) 

यह एक GridView के साथ ठीक काम करता है, फिर भी प्रलेखन मैंने पाया कहना है कि GrideView के PageCount संपत्ति में कुल रिकॉर्ड से उत्पन्न होता है डेटासोर्स। क्या सभी रिकॉर्ड लौटने के अलावा किसी और चीज के आधार पर पेजकाउंट सेट करने का कोई तरीका नहीं है?

मेरे डेटा स्रोत में हजारों रिकॉर्ड हो सकते हैं, इसलिए मैं ग्रिडव्यू के पेज गिनती कार्य को करने के लिए बस उन सभी का चयन नहीं करना चाहूंगा। मैं शायद ग्रिड व्यू के पेज गिनती को अनदेखा कर सकता हूं और इसे स्वयं ही गणना कर सकता हूं, लेकिन अगर ढांचे के पास ऐसा करने का कोई तरीका है, तो मैं इसका इस्तेमाल करूंगा।

+0

क्या आपने उत्तर देने की कोशिश की? – eglasius

उत्तर

8

नेट 4.5 के रूप में GridView के साथ काम करता मैं दृढ़ता से सुझाव है कि आप ObjectDataSource तरीका अपनाते हैं।

1) इसके बजाय मैन्युअल रूप से पीछे कोड में grid.DataSource संपत्ति की स्थापना की है, तो आप पेज के लिए एक अतिरिक्त तत्व जोड़:

आप इस दृष्टिकोण यहाँ से अपरिचित हैं मूल बातें कर रहे हैं। आपने ग्रिड के DataSourceID को अपने ऑब्जेक्टडेटा स्रोत की आईडी पर सेट किया है।

2) यह वह जगह है जहां आपको वास्तविक नियंत्रण मिलता है। आप एक नई कक्षा बनाते हैं और इसे दो फ़ंक्शन "SelectRows()" और "GetCount()" देते हैं। आप अपने तर्क को दोनों कार्यों में डाल सकते हैं और अपने दिल की सामग्री को अनुकूलित कर सकते हैं। वेब सेवाओं का उपयोग करने के लिए स्वतंत्र महसूस करें यदि आपको इसके साथ काम करने की ज़रूरत है, लेकिन इस विधि के तहत, आप पंक्तियों को वापस करने के लिए कॉल कर सकते हैं और अन्य को गिनती वापस करने के लिए।

3) ऑब्जेक्टडाटासोर्स के प्रॉपर्टी एडिटर का उपयोग अपनी कक्षा से कनेक्ट करने और पेजिंग को सक्षम करने के लिए करें। तम तैयार हो!

मैं दृढ़ता से सुझाव देता हूं कि आप The Code Project's Example of using ObjectDataSource and GridView देखें क्योंकि यह स्पष्ट रूप से इच्छित चीज़ों का समर्थन करने का इच्छित तरीका है।

शुभकामनाएं!

5

आपको AllowCustomPaging = "true" सेट करना होगा। और जब करते databinding:

mygrid.VirtualItemCount = totalRecords; 
mygrid.DataSource = mysource; 
mygrid.DataBind(); 

अद्यतन 1: से ऊपर केवल datagrid के लिए है। दुर्भाग्य से ग्रिडव्यू के साथ सर्वर साइड पेजिंग करने का एकमात्र समर्थित तरीका ऑब्जेक्ट डेटास्रोत को कार्यान्वित करना या कस्टम डेटासोर्स को कार्यान्वित करना है। यहां संबंधित एमएसडीएन दस्तावेज़ http://msdn.microsoft.com/en-us/library/5aw1xfh3.aspx है।

अद्यतन 2: इस विधि अब

+1

VirtualItemCount केवल डेटाग्रिड नियंत्रणों के साथ काम करता है। ग्रिड व्यू पर, यह संपत्ति मौजूद नहीं है, अन्यथा मैं इसका उपयोग करूंगा। –

+1

@ क्या आप सही हैं, मैंने इसके बारे में एक अपडेट जोड़ा - मूल रूप से आपको ऑब्जेक्टडेटासोर्स या कस्टम डेटासोर्स के साथ जाने के लिए मजबूर होना पड़ता है। एमएसडीएन दस्तावेज़ के लिए एक लिंक जोड़ा गया। – eglasius

+3

यह संपत्ति ग्रिड व्यू पर .NET 4.5 [msdn] (http://msdn.microsoft.com/en-us/library/system.web.ui के रूप में मौजूद है।webcontrols.gridview.virtualitemcount% 28v = vs.110% 29.aspx) – sparebytes

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

  • कोई संबंधित समस्या नहीं^_^