0

Infragistics WebHierarchicalDataGrid コントロールでカスタム データ バインディングを使用してページングを実現しようとしています。ユーザーが WHDG ページャーでページ リンクをクリックしたときの望ましい動作は、バックエンドから 1 ページのデータを取得し (それを実行する SQL Server SP を既に持っています)、それを WHDG にバインドして一度に 1 ページを表示することです。

「ContainerGridDataBinding」イベントを使用するのがそれを行う方法だと思いますが、動作するコードを設定することはできません。それを行う方法のヘルプまたはコード例は大歓迎です。

WHDG の子バンドで同じ動作が持続することも素晴らしいことです。

4

2 に答える 2

2

SQL リクエスト/選択コマンドを取得したら、単一のページを取得します。これを行うには、カスタム ページャーを作成する必要があります。次に、ページャーにあるボタン/ドロップダウンまたはその他のコントロールに関連付けられたイベントで、SQL コマンドを呼び出します。WebDataGrid のカスタム ページャーを実装する方法については、以下を参照してください。

http://help.infragistics.com/NetAdvantage/ASPNET/2012.1/CLR4.0/?page=WebDataGrid_Using_Custom_Paging_Template.html

コードによるカスタム ページャー: http://help.infragistics.com/NetAdvantage/ASPNET/2012.1/CLR4.0/?page=WebDataGrid_Using_Custom_Paging_Template_in_Code.html

WebHierarchicalDataGrid に対してこれを行うことは、親バンドに対して同じになります。子供の場合は、親バンドではなく、そのバンドの動作に対して実行する必要があります。

ページャーでボタンやドロップダウンを使用せず、代わりにリンク (1、2、3、4 など) が必要な場合は、次のコードを実行することで実行できます。

    private class CustomItemTemplate : ITemplate
    {
        #region ITemplate Members

        public void InstantiateIn(Control container)
        {
            for (int i = 0; i < 3; i++)
            {
                LiteralControl link = new LiteralControl();
                //class for current page: igg_PageCurrent
                //class for other pages: igg_PageLink
                link.Text = "<span class='igg_PageLink' idx='" + i.ToString() + "'>" + (i+1).ToString() + "</span>";

                container.Controls.Add(link);
            }
        }

        #endregion
    }

    protected void Page_PreInit(object sender, EventArgs e)
    {
        whdg1.Behaviors.Paging.PagerTemplate = new CustomItemTemplate();
    }

ただし、実際の問題は、データベースからこの方法でデータを取得する場合です。この場合、1 ページ分のデータしか取得できないため、グリッドはデータベース内にいくつのページがあるかわかりません。したがって、これを見つける方法を知るか、単に知る必要があります。これにより、子レコードまたはレコードのページ数を拡張できる行ごとに知る必要があるため、子バンドの実装がより困難になります。

于 2012-09-18T18:05:41.243 に答える
0

思ったよりずっと楽だった。すべてのPageIndexChangedイベント(カスタムUserControlである可能性のあるカスタムページャーによって引き起こされた場合でも)で、WHDGを偽の空のデータセットにバインドしてContainerGridDataBindingを起動し、現在のページのデータのみがDBから取得されます

于 2012-09-18T19:56:27.860 に答える