LinqDataSource - क्या आप रिकॉर्ड्स की मात्रा को सीमित कर सकते हैं?

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

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

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

[अपडेट]

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

0
ro fr bn

6 उत्तर

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

SELECT TOP 3 FROM 

जो आपको अपनी जरूरतों को करने की अनुमति देनी चाहिए

0
जोड़ा

Yes and No.

No, you cannot limit the results within the LinqDataSource control. Because Linq uses deferred execution, the expectation is that the presentation control will do the recordset limits.

Yes, you can do this with a ListView control. The trick is to use the DataPager control within the LayoutTemplate, like so:


  <div id="itemPlaceholder" runat="server" />
  
              

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

उम्मीद है की यह मदद करेगा।

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

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

जैसे

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);
}
0
जोड़ा

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

0
जोड़ा

आप LinqDataSource का इवेंट चुन सकते हैं:

protected void ldsLastEntries_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 10;
}
0
जोड़ा
यह जवाब है!
जोड़ा लेखक Gabriel Graves, स्रोत
protected void DocsData_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 5;
}
0
जोड़ा
क्या आप समझा सकते हैं कि अपने कोड का उपयोग कैसे करें, इसे कहां रखा जाए?
जोड़ा लेखक Al2O3, स्रोत
स्टैक ओवरफ़्लो में आपका स्वागत है! केवल कोड के ब्लॉक को पोस्ट करने के बजाय, कृपया समझाएं यह कोड समस्या को हल क्यों करता है। एक स्पष्टीकरण के बिना, यह एक जवाब नहीं है।
जोड़ा लेखक Martijn Pieters, स्रोत
यह जवाब है!
जोड़ा लेखक Gabriel Graves, स्रोत