2010-03-07 10 views
5

ठीक है, इसलिए मैं टेलरिक रैडग्रिड (asp:Gridview के समान) पर अपना कस्टम पेजिंग प्राप्त करने की कोशिश कर रहा हूं, लेकिन मैं अभी भी दीवार पर टक्कर मार रहा हूं। (मेरे प्रश्न का पहला भाग here)ग्रिड व्यू (रैडग्रिड) और कस्टम पेजिंग

इसलिए मैंने सुझाव लागू किया है। मैं निम्नलिखित संग्रहित प्रोक

ALTER PROCEDURE [dbo].[bt_HealthMonitor_GetAll] 
(
    @StartRowIndex  int, 
    @MaximumRows  int 
) 

AS 
SET NOCOUNT ON 

Select 
RowNum, 
[ID], 
[errEx], 
[errURL], 
[errSource], 
[errUser], 
[errMessage], 
[errIP], 
[errBrowser], 
[errOS], 
[errStack], 
[errDate], 
[errNotes] 
From 
(
Select 
    [ID], 
    [errEx], 
    [errURL], 
    [errSource], 
    [errUser], 
    [errMessage], 
    [errIP], 
    [errBrowser], 
    [errOS], 
    [errStack], 
    [errDate], 
    [errNotes], 
    Row_Number() Over(Order By [ID]) As RowNum 
    From dbo.[bt_HealthMonitor] t 
) 
As DerivedTableName 
Where RowNum Between @StartRowIndex And (@StartRowIndex + @MaximumRows) 

Order By [ID] Desc 

फिर एक और संग्रहीत प्रक्रिया का उपयोग रिकॉर्ड गिनती

ALTER PROCEDURE [dbo].[bt_HealthMonitor_GetRecordCount] 

AS 
SET NOCOUNT ON 

return (Select Count(ID) As TotalRecords From bt_HealthMonitor) 

पाने के लिए और मैं एसक्यूएल करने के लिए LINQ का उपयोग कर रहा मेरी RadGrid

करने के लिए बाध्य करने के लिए
Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) 

    Dim startRowIndex As Integer = (RadGrid1.CurrentPageIndex * RadGrid1.PageSize) 
    Dim maximumRows As Integer = RadGrid1.PageSize 

    Dim HealthMonitorDC As New DAL.HealthMonitorDataContext 

    Dim r = HealthMonitorDC.bt_HealthMonitor_GetAll(startRowIndex, maximumRows) 
    RadGrid1.DataSource = r 
End Sub 

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit 
    Dim HealthMonitorDC As New DAL.HealthMonitorDataContext 
    Dim count = HealthMonitorDC.bt_HealthMonitor_GetRecordCount() 
    RadGrid1.MasterTableView.VirtualItemCount = count.ReturnValue 
    RadGrid1.VirtualItemCount = count.ReturnValue 
End Sub 

लेकिन समस्या जो मैं अनुभव कर रहा हूं cing यह है कि ग्रिड केवल पहली 10 पंक्तियों (अपेक्षित के रूप में) पकड़ लेता है लेकिन मुझे इसे प्राप्त करने की आवश्यकता है ताकि यह पहचान सके कि तालिका में 200 पंक्तियां हैं ताकि पेजिंग आइकन दिखाई दे सकें।

अगर मैं dropdownlist का उपयोग 50 रिकॉर्ड प्रदर्शित करने के लिए है, तो 50 दिखाई, लेकिन अभी भी कोई पेजिंग माउस मुझे अगले 50

को पाने के लिए क्या मैं गलत कर रहा हूँ?

+0

धन्यवाद फिर से (आप विधि है जो कुल गणना रिटर्न कहाँ निर्दिष्ट कर सकते हैं) (आप विधि है जो डेटा रिटर्न कहाँ निर्दिष्ट कर सकते हैं) नौकर। मैंने अपने ब्लॉग पर अन्य लोगों के लिए अपने निष्कर्षों को उम्मीदपूर्वक ढूंढने और उपयोग करने के लिए http://dotnetblogger.com/post/2010/03/07/RadGrid-with- कस्टम- पेजिंग- सॉर्टिंग- फ़िल्टरिंग का उपयोग किया।एएसपीएक्स –

उत्तर

14

आपको ग्रिड को बताना होगा कि कुल में कितने रिकॉर्ड हैं। यह ग्रिड की VirtualItemCount प्रॉपर्टी सेट करके किया जाता है (आपको रिकॉर्ड्स की कुल संख्या पूछनी होगी)।

विवरण के लिए, documentation page पर एक नज़र डालें या online demo for custom paging देखें।

+0

मैंने ऊपर अपना प्रश्न संपादित किया है। मैंने डेमो में सुझावों को "दिखने" के लिए किया है, लेकिन मुझे अभी भी शीर्ष "एक्स" रिकॉर्ड मिल रहे हैं, जहां "एक्स" 'RadGrid1.PageSize' –

+0

PS है: मुझे सही दिशा में इंगित करने के लिए धन्यवाद अब तक। –

+1

कभी नहीं ... मैंने इसे हल किया। 'AllowCustomPageing =" true "' –

1

मार्टिन वर्चुअलइटम काउंटर के संबंध में सही है। इसे लागू करने का सबसे आसान स्थान NeedDataSource ईवेंट में है।

याद रखें कि आपको अंतिम पृष्ठ पर कम रिकॉर्ड के लिए खाते में कुछ तर्क डालना होगा। इसका मतलब है कि यदि आपके पास प्रति पृष्ठ 5 के साथ 14 रिकॉर्ड हैं, तो आप यह सुनिश्चित करना चाहते हैं कि आपका तर्क केवल अंतिम कॉल पर 4 रिकॉर्ड्स पुनर्प्राप्त करने का प्रयास करता है।

यहां बताया गया है मैंने किया (एक सामान्य सूची का उपयोग कर):

If gridRecords.Count < (grid.pagesize * (grid.pageIndex + 1)) Then 
     gridRecords.GetRange(grid.pageIndex * grid.pagesize, gridRecords.Count - (grid.pagesize * grid.pageIndex)) 
    Else 
     gridRecords.GetRange(grid.pageIndex * grid.pagesize, grid.pagesize) 
    End If 

जाहिर है, आप अगर आप केवल डेटाबेस से रिकॉर्ड को पुन: प्राप्त कर रहे हैं अपने डेटा का उपयोग कॉल हिस्से के रूप में यह करने के लिए चाहता हूँ जैसे तुम जाओ।

0

आप ऑब्जेक्टडेटा स्रोत का उपयोग करके भी कार्यान्वित कर सकते हैं।

http://www.unboxedsolutions.com/sean/archive/2005/12/28/818.aspx

यानी CustomPaging यानी पेजिंग तर्क के साथ ObjectDataSource साथ RadGrid का उपयोग कर अपने दम पर लागू किया जाना चाहिए।

इसके अलावा ObjectDataSource दो विधियों है 1. SelectMethod 2. SelectCountMethod के लिए @Martin

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