Ext GridPanel 拖放后加列插值解决方案总结

时间: 2011-08-02 / 分类: JavaScript / 浏览次数: 472 views / 0个评论 发表评论

Ext 的grid拖拽,用起来很方便。最近需要实现的是拖拽后的gridPanel比前面的多两列。现在拖拽过去后,希望能够编辑,而且希望有默认值。

image左边的gridpanel

image右边的gridPanel

实现拖拽的方法和我前面发的实现拖拽排序都差不多。就是目标匹配问题。

但是要实现默认值,有点难道我了

在网上差了很多,都没有找到类是的。有人说修改ds,什么insert。感觉不对头,找了半天没有找到,算了还是自己静心下来想。

————————-

PS:我现在写的文章,除了会描述怎么做外,也会描述我是怎么思考的。这样即使有些不同,只要思路对了,也会有所启发。

———————

1,既然每拖一个过去,这边的就会减少,那边的就会增加。这就是在操作一条记录。这个记录我是可以获取的。

之前的拖拽排序给了我启发,之前是去到了这条记录后要对排序值进行修改然后再放下。

2,找到了拖拽处理时候的代码:

   1:   notifyDrop : function(ddSource, e, data){
   2:         var records =  ddSource.dragData.selections;
   3:         Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
   4:         factorPanel.store.add(records);
   5:          return true
   6:  }

这个地方是用的Ext.each,中间的就是操作。然后考虑在这个地方多做点操作,除了做移除。

3,将代码修改如下面:

   1:  notifyDrop : function(ddSource, e, data){
   2:          var records =  ddSource.dragData.selections;
   3:          Ext.each(records, function(rowData,index){
   4:                ddSource.grid.store.remove;
   5:                rowData.data.pageno=1;
   6:                 rowData.data.sn=rowData.data.id;
   7:  
   8:           }, ddSource.grid.store);
   9:           subjectPanel.store.add(records);
  10:             return true
  11:  }

这里把中间的操作改成了一个function,默认会传两个参数,第一个是迭代出来的对象,就是一条具体的几率,第二个是当前迭代的序号相当于for循环是用的i变量。我这里就是除了把原数据移除外,还直接给一条几率多家了两个属性 pageno和sn,这就是javascript的灵活之处。

这样效果就出来了。写出来总结和回顾一下。希望对你也有用!

发表评论

您的昵称 *

您的邮箱 *

您的网站