easyui datagrid怎么找到具体的单元格 ,然后修改对应的值?

嫣如舜华 2013-11-20 10:50:38
var tr = $(this).datagrid('getPanel').find('div.datagrid-body tr');  
tr.each(function(){
var td = $(this).children('td[field="name"]');
??? //问题: 如何赋值?
});
//问题:这样会遍历所有的行。
...全文
25518 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅天下 2015-04-14
  • 打赏
  • 举报
回复
引用 11 楼 showbo 的回复:
[quote=引用 10 楼 xinguotiantian 的回复:] [quote=引用 9 楼 showbo 的回复:] onSelect中延时执行看看,可能有冲突。我这里1.3.4测试可以
           onSelect: function (rowIndex, rowData) {
                setTimeout(function () {
                    var drow = $('#detail').datagrid('getSelected');
                    var index = $('#detail').datagrid('getRowIndex', drow);

                    $('#detail').datagrid('endEdit', index);
                    $('#detail').datagrid('updateRow', { index: index, row: { LocationId: rowData.LocationId, CurrentAmount: rowData.CurrentAmount} });
                }, 100);
            }
我试了下这个方法,好用! 终于解决了,万分感谢呀~[/quote] O(∩_∩)O~,我也学到了,昨天弄的:easyui datagrid使用combogrid作为编辑器示例[/quote] 采用setTimeout解决可以理解为非常规解决方案,其实我们可以想想我们在进行formatter之前需要做的事情,formatter中的数据又是如何来的。刚开始用easyUI,个人认为这么写可能更加常规一些: onSelect调用下面function

//选择用户后值更新其他列
function userChange(rowIndex, rowData) {
	var ed = $('#detailGrig').datagrid('getEditor', {index:editIndex,field:'viewUser'});
	if(ed!=undefined){
		var username = $(ed.target).combogrid('getText');
		$('#detailGrig').datagrid('getRows')[editIndex]['username'] = username;
	}
	$('#detailGrig').datagrid('endEdit', editIndex);
	$('#detailGrig').datagrid('updateRow', { 
	    index: editIndex, 
	    row: {
	    	name: rowData.username
	    } 
   })
}
Go 旅城通票 2013-11-21
  • 打赏
  • 举报
回复
引用 10 楼 xinguotiantian 的回复:
[quote=引用 9 楼 showbo 的回复:] onSelect中延时执行看看,可能有冲突。我这里1.3.4测试可以
           onSelect: function (rowIndex, rowData) {
                setTimeout(function () {
                    var drow = $('#detail').datagrid('getSelected');
                    var index = $('#detail').datagrid('getRowIndex', drow);

                    $('#detail').datagrid('endEdit', index);
                    $('#detail').datagrid('updateRow', { index: index, row: { LocationId: rowData.LocationId, CurrentAmount: rowData.CurrentAmount} });
                }, 100);
            }
我试了下这个方法,好用! 终于解决了,万分感谢呀~[/quote] O(∩_∩)O~,我也学到了,昨天弄的:easyui datagrid使用combogrid作为编辑器示例
嫣如舜华 2013-11-21
  • 打赏
  • 举报
回复
引用 9 楼 showbo 的回复:
onSelect中延时执行看看,可能有冲突。我这里1.3.4测试可以
           onSelect: function (rowIndex, rowData) {
                setTimeout(function () {
                    var drow = $('#detail').datagrid('getSelected');
                    var index = $('#detail').datagrid('getRowIndex', drow);

                    $('#detail').datagrid('endEdit', index);
                    $('#detail').datagrid('updateRow', { index: index, row: { LocationId: rowData.LocationId, CurrentAmount: rowData.CurrentAmount} });
                }, 100);
            }
我试了下这个方法,好用! 终于解决了,万分感谢呀~
嫣如舜华 2013-11-20
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
[quote=引用 2 楼 xinguotiantian 的回复:]
[quote=引用 1 楼 showbo 的回复:]
datagrid不是有updateRow方法

给datagrid定义idField,通过id找到对应的记录下标,调用datagrid更新需要的行数据,datagrid会自动更新dom的内容

$('#dg').datagrid('updateRow',{index:$('#dg').datagrid('getRowIndex','数据行的id'),row:{name:'xxxxxx00000'}})[/code]


这个方法我知道,但我是在列编辑器combogrid的选中事件中写的,直接用updateRow方法会报错。[/quote]

先调用endEdit结束编辑,在执行updateRow[/quote]

我把代码贴出来:
var batchEditor = {
type : 'combogrid',
options : {
panelWidth:450,
idField:'BatchNo',
textField:'BatchNo',
fit: true,
fitColumns:true,
singleSelect: true,
required: true,
editable : false,
columns: [[
{ field: 'BatchNo', title: '批次号', width: 70, align: 'center', sortable: "true" },
{ field: 'LocationId', title: '库位ID', width: 70, align: 'center', sortable: "true" , hidden: "true"},
{ field: 'LocationName', title: '库位', width: 70, align: 'center', sortable: "true" },
{ field: 'CurrentAmount', title: '数量', width: 70, align: 'center', sortable: "true" },
{ field: 'Price', title: '价格', width: 70, align: 'center', sortable: "true" },
{ field: 'ManufactureDate', title: '生产日期', width: 80, align: 'center', sortable: "true" },
{ field: 'ValidityPeriod', title: '有效期', width: 80, align: 'center', sortable: "true" }
]],
onSelect:function(rowIndex, rowData) {
var drow = $('#detail').datagrid('getSelected');
var index = $('#detail').datagrid('getRowIndex',drow);

$('#detail').datagrid('endEdit', index);
$('#detail').datagrid('updateRow',{index:index,row:{LocationId:rowData.LocationId,CurrentAmount:rowData.CurrentAmount} }
}
}

报这个错误:[
Go 旅城通票 2013-11-20
  • 打赏
  • 举报
回复
引用 2 楼 xinguotiantian 的回复:
[quote=引用 1 楼 showbo 的回复:] datagrid不是有updateRow方法 给datagrid定义idField,通过id找到对应的记录下标,调用datagrid更新需要的行数据,datagrid会自动更新dom的内容
$('#dg').datagrid('updateRow',{index:$('#dg').datagrid('getRowIndex','数据行的id'),row:{name:'xxxxxx00000'}})
这个方法我知道,但我是在列编辑器combogrid的选中事件中写的,直接用updateRow方法会报错。[/quote] 先调用endEdit结束编辑,在执行updateRow
嫣如舜华 2013-11-20
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
datagrid不是有updateRow方法 给datagrid定义idField,通过id找到对应的记录下标,调用datagrid更新需要的行数据,datagrid会自动更新dom的内容
$('#dg').datagrid('updateRow',{index:$('#dg').datagrid('getRowIndex','数据行的id'),row:{name:'xxxxxx00000'}})
这个方法我知道,但我是在列编辑器combogrid的选中事件中写的,直接用updateRow方法会报错。
Go 旅城通票 2013-11-20
  • 打赏
  • 举报
回复
datagrid不是有updateRow方法 给datagrid定义idField,通过id找到对应的记录下标,调用datagrid更新需要的行数据,datagrid会自动更新dom的内容
$('#dg').datagrid('updateRow',{index:$('#dg').datagrid('getRowIndex','数据行的id'),row:{name:'xxxxxx00000'}})
Go 旅城通票 2013-11-20
  • 打赏
  • 举报
回复
onSelect中延时执行看看,可能有冲突。我这里1.3.4测试可以
           onSelect: function (rowIndex, rowData) {
                setTimeout(function () {
                    var drow = $('#detail').datagrid('getSelected');
                    var index = $('#detail').datagrid('getRowIndex', drow);

                    $('#detail').datagrid('endEdit', index);
                    $('#detail').datagrid('updateRow', { index: index, row: { LocationId: rowData.LocationId, CurrentAmount: rowData.CurrentAmount} });
                }, 100);
            }
嫣如舜华 2013-11-20
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
什么版本的easyui,编辑器能设置为comboeditor,我这里测试没有出现comboeditor,你怎么弄的

easyui 1.3.3

那是我加载页面的时候添加了combogrid的扩展方法,才可以使用的:
[
Go 旅城通票 2013-11-20
  • 打赏
  • 举报
回复
什么版本的easyui,编辑器能设置为comboeditor,我这里测试没有出现comboeditor,你怎么弄的
嫣如舜华 2013-11-20
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
你是更新弹出的combogrid还是父grid数据了? 看你代码是更新combogrid的,你操作父grid干嘛? 获取combogrid的grid,再执行更新

            onSelect: function (rowIndex, rowData) {
                var dg = $(this);//dg为当前弹出的grid的引用
                //var drow = $('#detail').datagrid('getSelected');
                //var index = $('#detail').datagrid('getRowIndex', drow);

                //$('#detail').datagrid('endEdit', index);
                dg.datagrid('updateRow', { index: rowIndex, row: { LocationId: rowData.LocationId, CurrentAmount: rowData.CurrentAmount} });
            }
combogrid只是父grid的一列的自定义编辑器,是说在combogrid选中一行后,给父grid修改下其他列的值
Go 旅城通票 2013-11-20
  • 打赏
  • 举报
回复
你是更新弹出的combogrid还是父grid数据了? 看你代码是更新combogrid的,你操作父grid干嘛? 获取combogrid的grid,再执行更新

            onSelect: function (rowIndex, rowData) {
                var dg = $(this);//dg为当前弹出的grid的引用
                //var drow = $('#detail').datagrid('getSelected');
                //var index = $('#detail').datagrid('getRowIndex', drow);

                //$('#detail').datagrid('endEdit', index);
                dg.datagrid('updateRow', { index: rowIndex, row: { LocationId: rowData.LocationId, CurrentAmount: rowData.CurrentAmount} });
            }

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧