如何刷新或重绘表格行

3
以下是我在应用程序开发中遇到的经典问题。 我在spring控制器中有一个JSONObject数组,我必须在jsp中进行迭代; 另外设置了一个名为JSONArrayStatus的状态属性,指示JSON数组是否为空。
如果JSONArray为空,则使用jquery将显示noDataImageDiv,否则将显示tableDIV(使用JSTL绑定JSONArray中的数据)。
我面临的问题如下。 1.编辑表中的一行并单击“更新”。 此时我会发出一个名为“UpdatedUser”的Ajax调用,该调用将返回所有记录以及更新的记录。 我可以使用刷新,但这不是推荐的用户体验,因此是不可取的。
2.为了反映表中的更新用户,我使用以下jquery代码:
清除表行table.clear().draw() 按以下方式循环结果集。
function reDrawExternalContactUsers(externalUsers) {
    table.clear().draw();
    var row = "";
    $.each(externalUsers, function (i, field) {
        row = '<tr><td></td><td></td><td class="edit">edit</td></tr>';
        $("#tableDIV").append(row);
    });
}

在重新绘制或刷新过程之后,

此函数不起作用


$(".edit").click(function(){ 
});

这个函数正在工作中

$("#tableDIV .edit").click(function(){ 
}); 

如有更好的方法,请建议一种刷新表格行的方式。

<div id="tableDIV">
   <table id="tableID">
      <thead>
         <tr>
            <th></th>
            <th></th>
            <th></th>
         </tr>
      </thead>
      <tbody>
         if data exist
         loop{
         <tr>
            <td></td>
            <td></td>
            <td class="edit">edit</td>
         </tr>
         } // loops ends
         if close
      </tbody>
   </table>
</div>
<div id="noDataImageDiv"> No data image</div>
1个回答

1

HTML 代码:

<div id="tableDIV">
  <table id="tableID">
    <thead>
      <tr>
        <th></th>
        <th></th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      if data exist
      loop{
      <tr>
        <td class="user-name"></td>
        <td></td>
        <td class="edit" data-user-id="">edit</td> //set user_id in attr data-user-id
      </tr>
      } // loops ends
      if close
    </tbody>
  </table>
</div>
<div id="noDataImageDiv"> No data image</div>

jQuery 代码:

您应该在文档上使用点击事件。

$(document).on('click', '.edit', function () {
  var btn = $(this);
  var user_id = btn.attr("data-user-id"); //user_id of user will update
  // extra user data  
  $.ajax({
    method: "POST",
    url: url,
    data: {
      'id': id,
      // extra data to send
    },
    success: function (data) {
      if (data.status) // successfully user updated
      {
        var user = data.user;
        /* you can set user data like this */
        btn.closest('tr').find('.user-name').html(user.name);
      }
    }
  });
});

什么是另一种最好的方式? - mantelinga r
如果我想使用循环,可以这样写: $('#ContactsParentDIV .selectUser:checked').each(function(){ - mantelinga r
你在使用哪种循环来获取所有选中的用户? - Ravindra Patel
在另一种方式中,在ajax成功回调中仅获取更新后的用户详细信息并将其设置为用户详细信息。 - Ravindra Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接