easyui中, datagrid调用endedit方法时其他列的formatter失效了是什么原因?
时间: 2024-03-27 13:39:04 浏览: 15
这可能是因为 `endedit` 方法会触发 `onAfterEdit` 事件,而这个事件可能会重新渲染整个表格,导致其他列的 `formatter` 失效。为了解决这个问题,你可以在 `onAfterEdit` 事件中手动调用 `refreshRow` 方法,只刷新当前行,而不是整个表格。例如:
```javascript
$('#datagrid').datagrid({
onAfterEdit: function(index, row, changes) {
$(this).datagrid('refreshRow', index);
}
});
```
这样就可以保证其他列的 `formatter` 不受影响了。
相关问题
easyui的datagrid使用toexcel时对某一列格式进行操作
当使用EasyUI的datagrid导出到Excel时,您可以使用easyui-export-excel插件对某一列进行格式化操作。以下是一个示例代码,演示如何将一个日期列格式化为'yyyy-mm-dd'的格式:
```javascript
$('#datagrid').datagrid('toExcel', {
filename: 'data.xls',
formatter: {
date: function(value,row,index) {
return $.fn.datebox.defaults.formatter(new Date(value));
}
}
});
```
在上面的代码中,我们将使用`toExcel`方法导出datagrid数据,并且指定导出文件的名称为`data.xls`。我们还将使用`formatter`选项指定一个自定义的格式化函数来格式化日期列。
在`formatter`对象中,我们指定了一个名为`date`的属性,它是一个回调函数。当导出Excel时,easyui-export-excel插件将会调用这个函数来格式化日期列的值。在这个函数中,我们将日期值转换为Date对象,并使用`datebox`组件的默认格式化器将其格式化为'yyyy-mm-dd'的格式。
您可以编写自己的自定义格式化函数,根据需要对datagrid列进行格式化操作。
easyui的datagrid的行在调用appendRow方法后根据其他列的值设置可选中和不可选择
可以在 `onLoadSuccess` 和 `onAdd` 事件中遍历每一行数据,根据需要设置 `selectable` 属性来控制行是否可选中。示例代码如下:
```javascript
$('#datagrid').datagrid({
// ...
onLoadSuccess: function(data) {
var rows = data.rows;
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
if (row.someColumn === 'someValue') {
// 设置行不可选中
$('#datagrid').datagrid('getRowByIndex', i).selectable = false;
}
}
},
onAdd: function(index, row) {
if (row.someColumn === 'someValue') {
// 设置行不可选中
$('#datagrid').datagrid('getRowByIndex', index).selectable = false;
}
}
});
```
其中 `someColumn` 和 `someValue` 分别代表其他列的名称和对应的值,你需要根据实际情况进行修改。