2008-08-07 24 views
27

मैं एक पृष्ठ पर LinqDataSource नियंत्रण का उपयोग करना चाहता हूं और लौटाए गए रिकॉर्ड्स की मात्रा को सीमित कर सकता हूं। मैं जानता हूँ कि अगर मैं कोड का उपयोग के पीछे मैं कुछ इस तरह कर सकता है:लिंककटाससोर्स - क्या आप लौटाए गए रिकॉर्ड्स की मात्रा सीमित कर सकते हैं?

IEnumerable<int> values = Enumerable.Range(0, 10); 
IEnumerable<int> take3 = values.Take(3); 

किसी को भी पता है अगर कुछ इस तरह एक LinqDataSource नियंत्रण के साथ संभव है?

[अपडेट]

मैं ListView नियंत्रण के साथ LinqDataSource उपयोग करने के लिए जा रहा हूँ, नहीं एक GridView या पुनरावर्तक। LinqDataSource विज़ार्ड रिकॉर्ड्स रिटर्न की संख्या को सीमित करने की क्षमता प्रदान नहीं करता है। उन्नत विकल्प केवल आपको हटाए गए, आवेषण और अपडेट सक्षम करने की अनुमति देते हैं।

उत्तर

1

मुझे पता है कि अगर आप एक पेजिंग पुनरावर्तक या linqdatasource साथ gridview का उपयोग यह स्वचालित रूप से परिणामों की संख्या को अनुकूलित करेंगे, लेकिन मैं यह भी यकीन है कि डेटा स्रोत विज़ार्ड में आप उन्नत विकल्प के पास जाकर

तक सीमित कर सकते हैं
SELECT TOP 3 FROM 

जो आप क्या जरूरत है

12

हाँ और नहीं ऐसा करने की अनुमति चाहिए।

नहीं, आप LinqDataSource नियंत्रण के भीतर परिणामों को सीमित नहीं कर सकते हैं। चूंकि लिंकक स्थगित निष्पादन का उपयोग करता है, उम्मीद है कि प्रस्तुति नियंत्रण रिकॉर्डसेट सीमाएं करेगा।

हाँ, आप इसे सूची दृश्य नियंत्रण के साथ कर सकते हैं। चाल तो जैसे LayoutTemplate भीतर DataPager नियंत्रण का उपयोग करने के, यह है:

<LayoutTemplate> 
    <div id="itemPlaceholder" runat="server" /> 
    <asp:DataPager ID="DataPager1" runat="server" PageSize="3"> 
    </asp:DataPager>    
</LayoutTemplate> 

आम तौर पर, आप पहली बार की तरह DataPager अंदर नियंत्रण, पिछले, अगले और पिछले शामिल होंगे। लेकिन अगर आप इसे खाली बनाते हैं, तो आप केवल तीन परिणामों को ही देखेंगे जो आप चाहते हैं।

उम्मीद है कि इससे मदद मिलती है।

+1

खेद मैं अपने जवाब के बारे में प्रश्न किया है। यदि मैं आपके समाधान का उपयोग करता हूं तो क्या आप मुझे पृष्ठ वजन के बारे में बता सकते हैं ?! LinqDataSource सभी रिकॉर्ड का चयन करता है लेकिन ListView केवल 3 रिकॉर्ड दिखाता है।क्या यह पृष्ठ पर इतना ओवरहेड है? – mahdiahmadirad

22

मुझे यह वही समस्या थी। जिस तरह से मैं इसे मिला, लिंककटाससोर्स पर चयन ईवेंट का उपयोग करना और परिणाम मैन्युअल रूप से वापस करना था।

उदा।

protected void lnqRecentOrder_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    DataClassesDataContext dx = new DataClassesDataContext(); 
    e.Result = (from o in dx.Orders 
       where o.CustomerID == Int32.Parse(Request.QueryString["CustomerID"]) 
       select o).Take(5); 
} 
3

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

3

आप ईवेंट को LinqDataSource का चयन कर सकते हैं:

protected void ldsLastEntries_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    e.Arguments.MaximumRows = 10; 
} 
+0

यह जवाब है! –

4
protected void DocsData_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    e.Arguments.MaximumRows = 5; 
} 
+0

स्टैक ओवरफ़्लो में आपका स्वागत है! कोड के ब्लॉक को पोस्ट करने के बजाय, कृपया * समझाएं * यह कोड समस्या को हल क्यों करता है। एक स्पष्टीकरण के बिना, यह एक जवाब नहीं है। –

+0

क्या आप समझा सकते हैं कि अपने कोड का उपयोग कैसे करें, इसे कहां रखा जाए? – Al2O3

+0

यह जवाब है! –