2016-12-01 80 views
0

我有两个剑道网格(A,B)...乙其通过点击在A和它的数据源中装入了它通过在阿..如何防止剑道网格重新加载?

A.accounts所选择的行的属性加载

​​

我的问题是,在商务智能必须改变一个属性使用网格,但当它的属性改变了它的网格重新加载,如果我有1000行时,我改变了网格中的属性(anyrow,999 ie),回滚到开始 ...我已阅读并尝试了解它,但无法修复它...根据官方文档,所选的行由

var row = this.gridApprovals.select(); 
var caBean = this.gridApprovals.dataItem(row); 

它是一种ObservableObject,所以,当我试图更改属性,有些方法(ObservableOject的),它使这种行为,和电网的重装上阵,它的每一个迭代数据源项...

编辑: 我忘了提..其重要保持B方格纹的变化及其在一个种选择关系之间的关系.. 这里是一个道场项目http://dojo.telerik.com/uYemI/2

+0

您至少需要提供您的网格定义。更好的是,提供一个指向Kendo Dojo示例的链接,展示该问题。 –

+0

谢谢..我已经做到了....这里是链接http://dojo.telerik.com/uYemI/2 –

+0

我真的不知道如何解决它,但它是k-rebind =“ carsGridOptions“导致它...当editCell触发时,此属性导致k-rebind启动,因此setGridOptions触发重新绑定整个数据源(并重置网格)。您需要找到一种方法,只需将新数据推入网格,而不使用k-rebind(由于某种原因而在编辑时触发)。所以基本上,每个editCell都会导致网格重新初始化它的dataSource(通过k-rebind映射),从而导致重新读取。我们不需要那样做;;) –

回答

0

这个怎么样?

http://dojo.telerik.com/@Stephen/aNije

我删除了K-重新绑定属性,而不是线了您的setCarsGrid内的数据源()方法:

$scope.setCarsGrid = function() { 
      var row = this.brandGrid.select(); 
      var brand = this.brandGrid.dataItem(row); 
          var brandObj=brand.toJSON(); 

      var dataSource = new kendo.data.DataSource({ 
       data: brand.cars, 
       schema:{ 
       model:{ 
        fields:{ 
        id:{editable:false}, 
        model:{editable:false}, 
        color:{type:"string"} 
        } 
       }, 
       parse: function(response) { 
        $.each(response, function(idx, elem) { 
        elem.id = elem.id+10; 
        //if you put a break point here, every time you try to edit 'color' field.. will be stop because datasourse is iterated again 
        console.log("Grid has been reloaded and the editable field 'color' can be edited :'(the id property has been added +10") 
        }); 

        return response; 
       }          
       } 
      }); 

      // This first time this is called, the carsGrid has not been initialized, so it doesn't exist. 
      // But subsequent times, we just need to set the new datasource. 
      if (this.carsGrid) { 
      this.carsGrid.setDataSource(dataSource); 
      } 

      $scope.carsGridOptions = { 
        dataSource: dataSource, 
        selectable:true, 
        editable: true, 
        columns: [{ 
         field: "id", 
         },{ 
         field: "model", 
         },{ 
         field: "color", 
        }] 
       };      

     } 

从本质上讲,我只是从设置分离网格初始化网格的DATASOURCE。 第一次通过设置网格选项并设置数据源,然后设置数据源,然后将网格设置为新的数据源。

这就避免了K-重新绑定的行为......我相信这是记录:因为这些部件是在他们的数据,例如每次改变重新http://docs.telerik.com/kendo-ui/AngularJS/introduction#widget-update-upon-option-changes

这种方法并不适用于数据绑定控件,分页后的网格。

请注意,我并不真正知道角度,所以可能有更好的方法来组织此代码,但它的工作原理。

+0

它看起来不错,但在我的项目不起作用,我认为它是我的剑道版本,我忘了在dojo中设置版本..即时通讯使用Kendo UI 2015 Q2 ..并看起来像我不能设置dataSource这样... humm –

+0

嗨..在一些实验后,我已经使用this.carsGrid.setOptions,这里是一个道奇与mi最终代码...谢谢@The恐怖海盗斯蒂芬为你的帮助.... http://dojo.telerik.com/@alfonsomonroyiv/oneJA –