私はページングを有効にした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