2016-11-14 75 views
1

這是我的主要網格。在行動中,我去數據庫並獲取所有數據。我想把另一個網格,將使用相同的數據類型。這個網格將使用與我指定的過濾器相同的數據源。我不想再次訪問數據庫。 例如 GRID1:顯示所有數據 GRID2:顯示OrderAmount> 100劍道網共享數據源

(Html.Kendo().Grid<CustomerOrder>() 
.Name("Orders") 
.Events(events => events.DataBound("onDataBound")) 
.DataSource(dataSource => dataSource 
    .Ajax() 
    .ServerOperation(false) 
    .Read(read => read.Action("OrderListAjax", controller)) 
    .PageSize(Constants.PageSize) 
.Columns(columns => 
          {         
           columns.Bound(p => p.CustomerNumber).Title("CustomerNumber"); 
           columns.Bound(p => p.CustomerName).Title("CustomerName"); 
           columns.Bound(p => p.OrderAmount).Title("OrderAmount"); 
          })   
    ) 
+0

請注意,模型 - 視圖 - 控制器標籤是關於模式的問題。 ASP.NET-MVC實現有一個特定的標籤。 –

回答

1

我在下面試圖用不同的方式和它的作品也。

// Take the data source from main grid 
    var mainSource = $("#Orders").data("kendoGrid").dataSource.data().toJSON(); 

    // Prepare your query on main grid source 
    var orderAmountQuery = kendo.data.Query.process(mainSource, { 
     filter: { 
      logic: "and", 
      filters: [    
      { 
       field: "OrderAmount", 
       value: parseInt("100"), 
       operator: "gt" // greater than 
      } 
      ] 
     } 
    }); 

    // Create a new datasource for set filtered datasource 
    var orderAmountQueryDataSource = new kendo.data.DataSource({ 
     pageSize: 15, 
    }); 
    orderAmountQueryDataSource.data(orderAmountQuery.data); 


    // set grid2's data source with filtered dataSource 
    var grid2 = $("#Grid2").data("kendoGrid"); 
    grid2.setDataSource(orderAmountQueryDataSource); 
0

你的主要答案就在這裏:

is it possible to copy a grid datasource to a new datasource, a new datasource that loads all data?

但對於你的情況,你需要做的過濾,以及你可以使用這個:

在CSHTML中添加你的第二個網格:

<div id="MySecondGrid"></div> 

使用下面的JavaScript:

// Get the first datasource 
var ds1 = $("#Orders").data("kendoGrid").dataSource; 

// Filter the second datasource 
var ds2 = $.grep(ds1._data, function (item) { return item.OrderAmount > 100; }); 
ds2.serverPaging = false; 

// Set the second datasource 
$("#MySecondGrid").kendoGrid({ 
    dataSource: ds2 
}); 
+0

對於答案的第一部分,我想對問題發表評論,但我沒有足夠的聲望對問題發表評論。 –