페이지가 활성화 된 ultrawebgrid가 있습니다. 표시 할 데이터가 약 10K 행이므로 페이지 설정은 LoadOnDemand = "XML"속성을 설정하여 수행됩니다.XML로 LoadOnDemand를 사용하는 ultrawebgrid 페이징
내가 직면 한 문제는 페이지를 탐색 할 때 AJAX 호출이 일어나는 것을 볼 수 있지만 표시되는 데이터는 첫 페이지에만있는 것입니다.
예 : 10 페이지의 데이터가 있는데, '3'페이지를 클릭하면 그리드가 '1'페이지의 내용을 표시합니다.
그러나 열을 정렬하거나 필터링하면 결과 정렬 및 필터링이 예상대로됩니다.
에서 .aspx :
<DisplayLayout BorderCollapseDefault="Separate" Name="SampleGrid" RowHeightDefault="20px" SelectTypeRowDefault="Single" Version="4.00" AllowColSizingDefault="Free" SelectTypeColDefault="Single" TableLayout="Fixed" AllowAddNewDefault="Yes" AllowSortingDefault="OnClient" AllowUpdateDefault="Yes" AutoGenerateColumns="False" CellClickActionDefault="Edit" ViewType="Hierarchical">.
<Pager><PagerStyle CssClass="igwgPgrBlack2k7" /></Pager>
</DisplayLayout>
된 .vb : 당신이로드 찾고있는 페이지에 대한 데이터를 제공 할 것으로 예상된다 사용자 정의 페이징와
Protected Sub SampleGrid_InitializeDataSource(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebGrid.UltraGridEventArgs) Handles SampleGrid.InitializeDataSource
Dim dsData As System.Data.DataSet
Dim sql As String
dsData = DataManager.ExecuteDataset(ConnectionType.XXX, Data.CommandType.Text, sql) // getting dataset
'Me.SampleGrid.DisplayLayout.Pager.PageCount = Math.Ceiling(dsData.Tables(0).Rows.Count/Me.SampleGrid.DisplayLayout.Pager.PageSize) //on first load, i'm getting the PageSize as 8 whereas it has to be 50 rows, I tried setting the page size in 'InitializeLayout' but 'InitializeDataSource' event is called first. So where do i set the grid's PageSize.
SampleGrid.DataSource = dsData
End Sub
Protected Sub SampleGrid_InitializeLayout(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebGrid.LayoutEventArgs) Handles SampleGrid.InitializeLayout
Dim htmlString As New StringBuilder
SampleGrid.Browser = BrowserLevel.Xml
e.Layout.LoadOnDemand = LoadOnDemand.Xml
e.Layout.RowsRange = 50
e.Layout.XmlLoadOnDemandType = XmlLoadOnDemandType.Accumulative
SampleGrid.DisplayLayout.Pager.StyleMode=PagerStyleMode.QuickPages
SampleGrid.DisplayLayout.EnableInternalRowsManagement=True
SampleGrid.DisplayLayout.Pager.AllowCustomPaging=True
SampleGrid.DisplayLayout.Pager.AllowPaging = True
SampleGrid.DisplayLayout.Pager.PageSize = 50
SampleGrid.DisplayLayout.Pager.QuickPages = 5
htmlString.Append("<table cellspacing='0' cellpadding='0' style='width:100%;border:solid 1px Black;'>")
htmlString.Append("<tr>")
htmlString.Append("<td width='25%' align='right'>Viewing page [currentpageindex] of [pagecount] </td>")
htmlString.Append("<td align='center'>")
htmlString.Append("<b>[page:1:First] [prev]</b>")
htmlString.Append(" ")
htmlString.Append("[default]")
htmlString.Append(" ")
htmlString.Append("<b>[next] [page:[pagecount]:Last]</b>")
htmlString.Append(" ")
htmlString.Append("</td>")
htmlString.Append("<td width='25%' align='left' title='Enter page number and press Enter'>")
htmlString.Append("Go to:<input id='PagerGotoPageNumber' size='5' style='vertical-align:text-bottom;height:20px;font-family:verdana;font-size:8pt;padding:0 0 0 0;border:solid 1px black' onkeydown='return gotoPageKeyDown();' type='text' autocomplete='off' />")
htmlString.Append("<button style='height:22px' onclick='gotoPage();'>Go</button>")
htmlString.Append("</td>")
htmlString.Append("</tr>")
htmlString.Append("</table>")
SampleGrid.DisplayLayout.Pager.Pattern=htmlString.ToString()
End Sub
Private Sub SampleGrid_PageIndexChanged(ByVal sender As System.Object, ByVal e As Infragistics.WebUI.UltraWebGrid.PageEventArgs) Handles SampleGrid.PageIndexChanged
SampleGrid.DisplayLayout.Pager.CurrentPageIndex = e.NewPageIndex
End Sub
(코드 스 니펫이 게시 됨) 맞춤 페이지가 true로 설정된 경우 우리는 탐색 할 때 수동으로 각 페이지의 데이터를 제공해야하며 수동으로 정렬 및 필터링을 처리해야합니다. 그리드의 InitializeDataSource 이벤트에서 DataSource를 설정하면 페이지로드시이를 직접 수행 할 수 있으며 모든 기능을 수동으로 처리 할 때 XML로 LoadOnDemand를 설정할 필요조차 없습니다. SampleGrid.Browser = BrowserLevel.Xml 및 SampleGrid.DisplayLayout.LoadOnDemand = LoadOnDemand.Xml의 사용법은 무엇입니까? Continue ... –
제안한대로 사용자 지정 페이징을 false로 설정했습니다.이제 페이지 매김이 잘되어 전체 데이터 집합을 정렬 할 수는 있지만 필터링은 내가 속한 페이지에서만 수행됩니다. 전체 데이터 집합에 대해 필터링을 수행하는 방법을 제안 할 수 있습니까? 우리가 수동으로 설정하거나 설정할 필요가있는 속성이 있습니까? –
LoadOnDemand 및 Browser를 Xml로 설정하면 AJAX로드 온 디맨드 기능을 사용할 수 있습니다. 페이지로드시이를 처리해야한다면 페이징 할 때 비동기 새로 고침이 발생하지 않습니다. 필터링 관련 질문에 대해서는 필터링과 관련하여 그리드의 어떤 속성을 설정 했습니까? – alhalama