1

特定の (表示された) フィールドに対してのみリクエストを発行するように、Kendo UI グリッドを構成する方法は?

私の例では、Kendo UI グリッドは OData サービスにバインドされています。このサービスは、多数 (200 以上) のフィールドを持つテーブルを公開します。このアプリを使用すると、ユーザーはグリッドの表示フィールド セットを構成し、初期フィルターを設定し、パラメーターを並べ替えることができます。アプリがグリッドを構成すると、グリッドがオフになり、OData サービスにクエリを実行します。

グリッド kendo.Data.DataSource は次のように定義されます。

var gridDataSource = new kendo.data.DataSource({
    type: "odata",
    transport: {
        read: {
            url: "@Url.Content(dynDataSource.Url)",
            contentType: "application/json; charset=utf-8",
            type: "GET",
            dataType: "json"
        }
    },
    pageSize: @Model.MaxPageSize,
    serverPaging: true,
    serverFiltering: true,
    serverSorting: true,
    filter: ...
}

以下は、グリッドによって発行されたサンプル リクエストです (Firebug によってキャプチャされます)。

http://localhost:22411/Data/Comp?%24inlinecount=allpages&%24top=1000&%24filter=DistrictCode+eq+%27460800%27

これはテーブルのすべてのフィールドを返しますが、これは問題です。必須フィールドのみを選択してフィールドを制限する必要があります。その要求は次のようになります。

http://localhost:22411/Data/Comp?%24inlinecount=allpages&%24top=1000&%24filter=DistrictCode+eq+%27460800%27&%24select=DistrictCode,DistrictName,DistrictNumber

繰り返しますが、これが発生するようにグリッドを構成する方法は?

Kendo UI のソースが利用可能であることは認識していますが、現在、ソースが含まれていない試用版を使用しています。

4

2 に答える 2

0

私はこれに対して実行可能な解決策を自分で持っていると思います。このブログ投稿のアイデアを使用しました。

http://community.dynamics.com/product/crm/crmtechnical/b/zhongchenzhoustipstricksandportaldevelopment/archive/2012/05/20/how-to-use-kendo-ui-datasource-kendo-ui-grid-with-dynamics- crm-2011-rest-endpoint.aspx

イベント ハンドラーを ajaxSend イベントにアタッチし、OData サービス URL を監視し、そのような要求が検出されたら、selectURL に列リストを追加します。コードは次のとおりです。

$(document).ajaxSend(function (e, jqxhr, settings) {
  if (settings.url.toLowerCase().indexOf("@Url.Content(dynDataSource.Url)".toLowerCase()) >= 0) {
      settings.url += "&%24select=@requestColumnList";
  }
});

お役に立てれば。それでも、誰かがより良い解決策を持っているなら、私はそれを聞きたい.

この質問を Telerik フォーラムにも投稿しました: http ://www.kendoui.c​​om/forums/framework/data-source/configure-the-kendo-ui-datasource-so-it-would-issue-requests-only -for-specific-displayed-fields.aspx#2131604

于 2012-06-01T13:15:25.900 に答える