【问题标题】:How to manage assigning ID to hidden field for multiple rows?如何管理将 ID 分配给多行的隐藏字段?
【发布时间】:2019-03-26 21:47:00
【问题描述】:

我有一个包含一百多条记录的数组,这些记录是我通过 Ajax 响应从数据库返回的,其中包含 ID、名字、姓氏和电子邮件等值。我已将最后三个字段(名字、姓氏和电子邮件)分配给我的 Razor 视图中的数据表行,每个行在最后一列中都有操作按钮。为简单起见,我想将 Id 值分配给隐藏字段,以便我可以借助该行的特定 Id 轻松编辑特定行。

虽然我的 Razor 视图上有一个隐藏字段,但我想知道如何将 Id 值分配给每条记录的隐藏字段?我的代码如下所示:

var userTable;
$.ajax({
        url: serviceUrl + "/api/account/getallusers",
        type: "GET",
        crossDomain: true,
        contentType: "application/json",
        dataType: 'json',
        success: function (res) {
            var strHTML = "";

            for (var i = 0; i < res.length; i++) {

                strHTML += '<tr>';
                strHTML += '<td style="width: 20px !important;">';
                strHTML += res[i].FirstName;
                strHTML += '</td>';
                strHTML += '<td style="width: 30px !important;">';
                strHTML += res[i].LastName;
                strHTML += '</td>';
                strHTML += '<td style="width: 50px !important;">';
                strHTML += res[i].Email;
                strHTML += '</td>';
                strHTML += '<td>';

                //Code for action buttons goes here

                strHTML += '</td>';
                strHTML += '</tr>';
            }

            $('#dtusers tbody').html(strHTML);
                userTable = $("#dtusers").DataTable({
            });

    });

有没有什么简单而有效的方法可以将 Id 值分配给隐藏字段,以便在编辑操作期间为我提供良好的服务?

【问题讨论】:

    标签: jquery asp.net-mvc-5 datatables asp.net-ajax hidden-field


    【解决方案1】:

    如果我正确理解了您的问题,那么您可以通过在 for 循环之前添加一个计数器变量来做到这一点。然后,您可以将其添加到表中 TR 元素的 ID。

    类似

    strHTML += '<TR id=tableRow' + counter + '>';
    

    然后在 for 循环结束时为下一次迭代增加计数器。

    它是否隐藏没有区别,因为任何使用开发者工具的人仍然可以看到元素内的属性值。

    你的代码看起来像这样

    var userTable;
     $.ajax({
        url: serviceUrl + "/api/account/getallusers",
        type: "GET",
        crossDomain: true,
        contentType: "application/json",
        dataType: 'json',
        success: function (res) {
            var strHTML = "";
            var counter = 1;
            for (var i = 0; i < res.length; i++) {
    
                strHTML += '<tr id=tableRow' + counter + '>';
                strHTML += '<td style="width: 20px !important;">';
                strHTML += res[i].FirstName;
                strHTML += '</td>';
                strHTML += '<td style="width: 30px !important;">';
                strHTML += res[i].LastName;
                strHTML += '</td>';
                strHTML += '<td style="width: 50px !important;">';
                strHTML += res[i].Email;
                strHTML += '</td>';
                strHTML += '<td>';
    
                //Code for action buttons goes here
    
                strHTML += '</td>';
                strHTML += '</tr>';
                counter++; //increment the counter for next iteration
            }
    
            $('#dtusers tbody').html(strHTML);
                userTable = $("#dtusers").DataTable({
            });
    
    });
    

    【讨论】:

    • 我怎样才能设法为循环的每次迭代维护隐藏字段?我可以使用相同的隐藏字段吗?因为我在 Ajax 响应中的记录太多了,甚至可能不计其数。
    • 如何将 Id 值(通过 Ajax 响应从数据库返回)分配给每个特定行的 id?与计数器变量相比,这不是最好的选择吗?因为我需要以某种方式将 Id 分配给每个 tr。
    • 我同意,您还可以查询表中的索引并分配它而不是计数器变量。在这种情况下,您需要编辑 SQL 查询以返回记录 ID,然后您可以将其分配为表行的 ID。你会这样做 strHTML += '';
    • 我同意这一点,我也应用了相同的技术,但不是最好的方法。我想我必须坚持隐藏字段,但我必须寻找一些动态技术来帮助我将每行的 id 列分配给隐藏字段。事实上,我不确定我是否必须只使用一个隐藏字段来管理它,或者我可能需要多个?
    • 一个 ID 足以在以后使用诸如 querySelectorAll() 之类的东西来检索行中的所有值。我看不出你为什么需要一个隐藏字段的原因,因为你可以使用任何你想要获取数据的属性,在这种情况下是每个 tableRow 的 ID。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签