8

KendoUI には、フィルターをオンにしたグリッドがあります。ユーザーが保存目的で使用するすべてのフィルターを知りたいので、次回ユーザーが来たときに自動入力できるようにします。すべてのフィルターを使用するにはどうすればよいですか?

4

3 に答える 3

18

コードがどのように見えるかはわかりませんが、グリッドのデータソース オブジェクトを取得し、メソッド filter() を呼び出して、現在適用されているデータソース フィルターを取得できるはずです。ここから取った以下の例を見てください:

<script>
var dataSource = new kendo.data.DataSource({
  data: [
    { name: "Jane Doe" },
    { name: "John Doe" }
  ],
  filter: { field: "name", operator: "startswith", value: "Jane" }
});
var filter = dataSource.filter();
console.log(filter.logic);  // displays "and"
console.log(filter.filters[0]); // displays '{field: "name", operator: "startswith", value: "Jane"}'
</script>
于 2013-10-18T17:30:55.687 に答える
5

上記の回答に追加するだけです-実際のデータソースをターゲットにせずに純粋にフロントエンドで実行したい場合-次を使用できます...

var myGrid = $("#gridname").data("kendoGrid");
myGrid.dataSource.filter().filters[0];

これをさまざまなパラメーターに分割することができます...

myGrid.dataSource.filter().filters[0].field
myGrid.dataSource.filter().filters[0].operator
myGrid.dataSource.filter().filters[0].value

これが役に立てば幸いです-乾杯

于 2015-04-24T04:49:42.807 に答える
2

私の構成は、データがサーバー側でフェッチされる MVC です。つまり、グリッドはこのメソッドを呼び出してデータを取得するということです。

public ActionResult Documents_Read([DataSourceRequest] DataSourceRequest request, 
        int documentType = (int)ApiGlobals.TrxTypes.חשבונית)

私がやっていることは単純です。セッション変数でリクエスト オブジェクトをキャプチャし、必要なときにいつでもセッション変数を使用します。次の例では、フィルターを使用して、グリッドでフィルター処理されたドキュメントのみを印刷します。

    public ActionResult Documents_Read([DataSourceRequest] DataSourceRequest request, 
        int documentType = (int)ApiGlobals.TrxTypes.חשבונית)
    {
       Session["DocumentListFilter"] = request;
       ...
    }

    public ActionResult PrintListKendo(int documentType)
    {           
        DataSourceRequest request  = (DataSourceRequest)Session["DocumentListFilter"];

        if (request == null)
        {
            request = new DataSourceRequest();
        }

        request.Page = 1;
        request.PageSize = int.MaxValue;

        IQueryable<Document> data = _db.GetDocuments()
           .Where(d => d.TrxTypeId == (int)documentType);

        DataSourceResult filteredData = data.ToDataSourceResult<Document, DocumentListSingleDocumentViewModel>(request,
            d => ViewModelFactory.Create(d));

        //... call the reporting package with the data, etc.
      }

リクエスト オブジェクトをデータベースに保存 (= シリアル化、またはプロパティを保存) し、ユーザーが関連するページを開いてグリッドがそのデータを取得したときに再読み込みできます。

于 2014-02-13T22:10:36.850 に答える