You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让DataTable绿色编辑按钮弹窗填充原始默认数据?

解决方案:让绿色编辑按钮弹窗自动填充行数据

步骤1:修正绿色编辑按钮的标识绑定

首先修改DataTables中绿色编辑按钮的渲染代码,把固定的data-id="1"改成当前行的唯一标识(比如row.device_id),确保按钮能关联到具体行:

{
  data: null,
  title: "edit",
  render: function (data, type, row) {
    return '<button class="btn btn-success btn-sm green-edit-btn" data-id="' + row.device_id + '" data-toggle="modal" data-target="#exampleModal">Edit</button>';
  }
}

步骤2:完善模态框的表单字段

把模态框里的单个输入框替换成对应表格字段的输入框,每个输入框添加明确的类名方便后续填充:

<div class="modal-body">
  <div class="form-group">
    <label>设备ID</label>
    <input class="form-control modal-input-device_id" placeholder="设备ID" />
  </div>
  <div class="form-group">
    <label>名称</label>
    <input class="form-control modal-input-name" placeholder="名称" />
  </div>
  <div class="form-group">
    <label>分组</label>
    <input class="form-control modal-input-group" placeholder="分组" />
  </div>
  <div class="form-group">
    <label>IP地址</label>
    <input class="form-control modal-input-ip" placeholder="IP地址" />
  </div>
  <div class="form-group">
    <label>端口</label>
    <input class="form-control modal-input-port" placeholder="端口" />
  </div>
  <div class="form-group">
    <label>IPC启用状态</label>
    <input class="form-control modal-input-ipc_enable" placeholder="IPC启用状态" />
  </div>
  <div class="form-group">
    <label>FTP启用状态</label>
    <input class="form-control modal-input-ftp_enable" placeholder="FTP启用状态" />
  </div>
</div>

步骤3:修改模态框显示逻辑,填充行数据

在模态框的show.bs.modal事件中,通过点击的按钮获取对应行的完整数据,然后将数据填充到各个输入框中:

$(function() {
  $('#exampleModal').on('show.bs.modal', function(e) {
    let btn = $(e.relatedTarget);
    let deviceId = btn.data('id');
    // 通过DataTables获取对应行的完整数据
    let rowData = $('#example').DataTable().row(function(idx, data, node) {
      return data.device_id === deviceId;
    }).data();
    
    // 填充数据到模态框输入框
    $('.modal-input-device_id').val(rowData.device_id);
    $('.modal-input-name').val(rowData.name);
    $('.modal-input-group').val(rowData.group);
    $('.modal-input-ip').val(rowData.ip);
    $('.modal-input-port').val(rowData.port);
    $('.modal-input-ipc_enable').val(rowData.ipc_enable);
    $('.modal-input-ftp_enable').val(rowData.ftp_enable);
    
    // 将设备ID绑定到保存按钮
    $('.saveEdit').data('deviceId', deviceId);
  })

  $('.saveEdit').on('click', function() {
    let deviceId = $(this).data('deviceId');
    // 收集修改后的数据
    let updatedData = {
      device_id: $('.modal-input-device_id').val(),
      name: $('.modal-input-name').val(),
      group: $('.modal-input-group').val(),
      ip: $('.modal-input-ip').val(),
      port: $('.modal-input-port').val(),
      ipc_enable: $('.modal-input-ipc_enable').val(),
      ftp_enable: $('.modal-input-ftp_enable').val()
    };
    // 调用更新接口
    updateRow(deviceId, updatedData);
    $('#exampleModal').modal('toggle');
  })
})

function updateRow(deviceId, updatedData) {
  const getToken = localStorage.getItem("token");
  $.ajax({
    url: `http://192.168.01.10:8000/api/item_all?device_id=${deviceId}`,
    type: 'PUT',
    headers: {
      'Authorization': 'Bearer ' + getToken  
    },
    data: updatedData,
    success: function(response){
      console.log('更新成功:', response);
      // 更新DataTables数据
      $('#example').DataTable().ajax.reload();
    },
    error: function(err) {
      console.error('更新失败:', err);
    }
  });
}

步骤4:清理冗余代码

移除原代码中未使用的editRow_website函数,以及重复的表格列(原代码中有两个device_id列,可保留一个)。

修改完成后,点击绿色编辑按钮时,模态框会自动填充对应行的原始数据,修改后点击保存即可提交更新,表格数据也会自动刷新。


内容的提问来源于stack exchange,提问作者happy beginer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:34:55