u
This commit is contained in:
1 parent
d9b2522552
commit
bac885cb28
7 files changed
+7027
-623
No files matched your search
@@ -51,6 +51,8 @@
|
||||
<a href="javascript:endEditRow()" class="easyui-linkbutton" iconCls="icon-save">保存当前行</a>
|
||||
<a href="javascript:removeRows()" class="easyui-linkbutton" iconCls="icon-remove">删除所选</a>
|
||||
<a href="javascript:confirmDelete()" class="easyui-linkbutton" iconCls="icon-save">彻底删除</a>
|
||||
<a href="javascript:addRow()" class="easyui-linkbutton" iconCls="icon-add">新增一行</a>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
@@ -58,8 +60,12 @@ let editIndex = undefined;
|
||||
|
||||
// 初始化 Datagrid 数据
|
||||
$('#dg').datagrid({
|
||||
data: createMockData(100)
|
||||
data: createMockData(0),
|
||||
onLoadSuccess:() => {
|
||||
console.log("success")
|
||||
}
|
||||
});
|
||||
|
||||
// 2. 获取分页控件并绑定事件
|
||||
var pager = $('#dg').datagrid('getPager');
|
||||
pager.pagination({
|
||||
@@ -128,26 +134,6 @@ function randomDate(start, end){
|
||||
}
|
||||
|
||||
|
||||
// 批量删除(不立即提交)
|
||||
function removeRows() {
|
||||
let rows = $('#dg').datagrid('getChecked');
|
||||
if(rows.length === 0){
|
||||
$.messager.alert('提示', '请先勾选要删除的行');
|
||||
return;
|
||||
}
|
||||
|
||||
// 倒序删除避免索引错乱
|
||||
let indexes = rows.map(row => $('#dg').datagrid('getRowIndex', row))
|
||||
.sort((a,b) => b - a);
|
||||
|
||||
indexes.forEach(index => $('#dg').datagrid('deleteRow', index));
|
||||
|
||||
|
||||
$('#dg').datagrid('clearSelections');
|
||||
$('#dg').datagrid('clearChecked');
|
||||
}
|
||||
|
||||
|
||||
// 获取真正删除的数据
|
||||
function confirmDelete(){
|
||||
let deleted = $('#dg').datagrid('getChanges','deleted');
|
||||
@@ -194,7 +180,77 @@ $('#dg').datagrid({
|
||||
});
|
||||
}
|
||||
});
|
||||
// 修复后的新增一行函数
|
||||
function addRow() {
|
||||
if (!endEditRow()) return; // 结束当前行编辑
|
||||
|
||||
// 获取准确的数据状态
|
||||
let data = $('#dg').datagrid('getData');
|
||||
let currentRows = data.rows || [];
|
||||
|
||||
// 创建新行对象 - 确保使用全新的对象
|
||||
let newRow = {
|
||||
id: getNextId(currentRows),
|
||||
name: '',
|
||||
birth: '',
|
||||
score: ''
|
||||
};
|
||||
|
||||
// 使用 appendRow 而不是 insertRow,避免索引计算问题
|
||||
$('#dg').datagrid('appendRow', newRow);
|
||||
|
||||
// 获取最新的行索引
|
||||
let allRows = $('#dg').datagrid('getRows');
|
||||
let newIndex = allRows.length - 1;
|
||||
|
||||
// 自动选中并进入编辑
|
||||
$('#dg').datagrid('selectRow', newIndex);
|
||||
$('#dg').datagrid('beginEdit', newIndex);
|
||||
editIndex = newIndex;
|
||||
|
||||
// 清除可能的数据残留
|
||||
$('#dg').datagrid('clearSelections');
|
||||
$('#dg').datagrid('clearChecked');
|
||||
|
||||
// 滚动到最后一行
|
||||
$('#dg').datagrid('scrollTo', newIndex);
|
||||
}
|
||||
|
||||
// 改进的删除函数,确保彻底清理
|
||||
function removeRows() {
|
||||
let rows = $('#dg').datagrid('getChecked');
|
||||
if(rows.length === 0){
|
||||
$.messager.alert('提示', '请先勾选要删除的行');
|
||||
return;
|
||||
}
|
||||
|
||||
// 倒序删除避免索引错乱
|
||||
let indexes = rows.map(row => $('#dg').datagrid('getRowIndex', row))
|
||||
.sort((a,b) => b - a);
|
||||
|
||||
indexes.forEach(index => $('#dg').datagrid('deleteRow', index));
|
||||
|
||||
// 彻底清理选择状态
|
||||
$('#dg').datagrid('clearSelections');
|
||||
$('#dg').datagrid('clearChecked');
|
||||
|
||||
// 重要:接受变更,确保删除状态被确认
|
||||
$('#dg').datagrid('acceptChanges');
|
||||
}
|
||||
|
||||
// 更安全的 ID 生成函数
|
||||
function getNextId(dataArray){
|
||||
if(!dataArray || dataArray.length === 0) return 1;
|
||||
|
||||
let maxId = 0;
|
||||
// 遍历所有行,确保找到真正的最大 ID
|
||||
for(let i = 0; i < dataArray.length; i++) {
|
||||
if(dataArray[i] && dataArray[i].id > maxId) {
|
||||
maxId = dataArray[i].id;
|
||||
}
|
||||
}
|
||||
return maxId + 1;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user