jQuery MiniUI

标题: griddata中两列数据的联动更新 [打印本页]

作者: xq759    时间: 2014-8-20 18:57:48     标题: griddata中两列数据的联动更新

做了个grid,其中有两列为ComboBox,例如例如“国家”和“国家代码”,现在想在”国家“下拉列表中选择国家后,对应的“国家代码”列自动更新。请问该怎么做呢?

作者: felt    时间: 2014-8-21 09:15:17

参考联动编辑的示例
http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
作者: xq759    时间: 2014-8-26 00:54:14

felt 发表于 2014-8-21 09:15
参考联动编辑的示例
http://www.miniui.com/demo/#src=datagrid/celllinkedit.html

不使用行编辑,使用单元格编辑
这样写CellCommitEdit事件,为什么不能实现联动?
function OnCellCommitEdit(e) {
              var grid = e.sender;
              var record = e.record;
              var field = e.field, value = e.value;
              if (field == "dept_id") {
                  var id = record.dept_id
                  if (id) {
                      var row = grid.getEditorOwnerRow(grid);
                      var editor = grid.getCellEditor("position", row);
                  
                      var url = "../data/AjaxService.aspx?method=GetPositionsByDepartmenId&id=" + id;
                      editor.setUrl(url);
                      editor.select(0);
                  }
               }
           }

作者: dforce    时间: 2014-8-26 09:13:42

xq759 发表于 2014-8-26 00:54
不使用行编辑,使用单元格编辑
这样写CellCommitEdit事件,为什么不能实现联动?
function OnCellCommitE ...

http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
这个例子不就是单元格编辑吗?
编辑器在开始编辑的时候才创建,请参考我们示例做
作者: xq759    时间: 2014-8-26 10:21:22

dforce 发表于 2014-8-26 09:13
http://www.miniui.com/demo/#src=datagrid/celllinkedit.html
这个例子不就是单元格编辑吗?
编辑器在开 ...

这个例子是单纯的清空,我现在想要实现的是,更改“部门”时,直接将对应的第一个“职位”赋予“职位列”
作者: dforce    时间: 2014-8-26 10:24:17

xq759 发表于 2014-8-26 10:21
这个例子是单纯的清空,我现在想要实现的是,更改“部门”时,直接将对应的第一个“职位”赋予“职位列” ...

你第一列更改的时候第二列编辑器还没有创建,不能获取到第一个职位
作者: xq759    时间: 2014-8-26 12:01:49

dforce 发表于 2014-8-26 10:24
你第一列更改的时候第二列编辑器还没有创建,不能获取到第一个职位

那使用updateRow如何赋新的查询数据(url)?
作者: felt    时间: 2014-8-26 12:13:53

xq759 发表于 2014-8-26 12:01
那使用updateRow如何赋新的查询数据(url)?

自己用ajax去获取相关数据,updateRow去更新相关单元格
作者: xq759    时间: 2014-8-27 22:46:51

按照版主的方法实现了,谢谢
function OnCellCommitEdit(e) {
            var updataId = "";
            var updataValue = "";
            var grid = e.sender;
            var record = e.record;
            var field = e.field;
            var value = e.value;

            if (field == "dept_id") {
                $.ajax({
                    type: "Post",
                    url: "../data/AjaxService.aspx/AjaxGetPositionsByDeptId",
                    data: "{'id':'" + value + "'}",
                    contentType: "application/json;charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        updataId = data.d["id"];
                        updataValue = data.d["name"];
                        $("#updata").text(updataId);
                        grid.updateRow(record, { position: updataValue, position_name: updataValue });
                    }
                })
            }
        }




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2