如何管理将ID分配给多行的隐藏字段?

时间:2018-10-22 18:38:03

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

我有一个由一百多个记录组成的数组,这些记录是我通过Ajax响应从数据库返回的,它们的值是Id,First Name,Last Name和Email。我已经将最后三个字段(名字,姓氏和电子邮件)分配给了Razor View中的数据表行,每个字段都具有最后一列中的操作按钮。为了简单起见,我想将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值分配给隐藏字段,以便在编辑操作期间可以很好地为我服务?

1 个答案:

答案 0 :(得分: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({
        });

});