This commit is contained in:
oneao committed 2025-11-27 17:28:41 +08:00
1 parent d9b2522552
commit bac885cb28
7 files changed
+7027 -623

No files matched your search

+77 -21
View File
@@ -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>