Как получить вспомогательные свойства в функции jQuery.each ()? - PullRequest
1 голос
/ 10 февраля 2012

В контроллере:

        var jsonData = new
        {
            total = totalPages,
            page = pageIndex,
            records = totalRecords,
            rows = founduser
        };
        return jsonData;  

В представлении:

function listItems(col, order, page, rows) {
    $.ajax({
        type: "GET",
        url: '@Url.Content("~/User/GetUsers")',
        data: { col: col, order: order, page: page, rows: rows },
        dataType: 'json',
        success: function (response) {
            var tags = "<tr><th>Login id</th><th>First name</th><th>Middle name</th><th>Last name</th><th>Prefix</th><th>Suffix</th><th>Reset</th><th>Email</th><th></th></tr>";
            $.each(response, function (index, item) {
                    tags += "<tr id=row-" + item.UserID + ">" +
                                "<td>" + item.LoginID + "</td>" +
                                "<td>" + item.FirstName + "</td>" +
                                "<td>" + item.MiddleName + "</td>" +
                                "<td>" + item.LastName + "</td>" +
                                "<td>" + item.Prefix + "</td>" +
                                "<td>" + item.Suffix + "</td>" +
                                "<td>" + item.IsReset + "</td>" +
                                "<td>" + item.SendEmail + "</td>" +
                                "<td>" +
                                "<a href=# class='ActivateItem' data-id = " + item.UserID + " item-data = " + item.LoginID + ">Activate</a> | " +
                                "<a href=/BaseAdmin/User/Details/" + item.UserID + ">Details</a></td></tr>";
            });
            $("#table-list").html(tags);
        }
    });
};  

row - это IEnumerable array, теперь, как я могу получить значения строки и поместить в таблицу?

<table id="table-list">
</table>  

Я могу получить значения, но не могу отобразить их с помощью jQuery.each. Спасибо за помощь!

Пример просмотра:

enter image description here

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

Когда вы возвращаете JSON-результат от действия вашего контроллера:

public ActionResult Foo()
{
    var jsonData = new
    {
        total = totalPages,
        page = pageIndex,
        records = totalRecords,
        rows = founduser
    };
    return Json(jsonData, JsonRequestBehavior.AllowGet);
}

вы можете просмотреть свойство rows в обратном вызове AJAX success:

success: function (response) {
var tags = "<tr><th>Login id</th><th>First name</th><th>Middle name</th><th>Last name</th><th>Prefix</th><th>Suffix</th><th>Reset</th><th>Email</th><th></th></tr>";
$.each(response.rows, function (index, item) {
    tags += "<tr id=row-" + item.UserID + ">" +
                "<td>" + item.LoginID + "</td>" +
                "<td>" + item.FirstName + "</td>" +
                "<td>" + item.MiddleName + "</td>" +
                "<td>" + item.LastName + "</td>" +
                "<td>" + item.Prefix + "</td>" +
                "<td>" + item.Suffix + "</td>" +
                "<td>" + item.IsReset + "</td>" +
                "<td>" + item.SendEmail + "</td>" +
                "<td>" +
                   "<a href=# class='ActivateItem' data-id = " + item.UserID + " item-data = " + item.LoginID + ">Activate</a> | " +
                   "<a href=/BaseAdmin/User/Details/" + item.UserID + ">Details</a>" +
                "</td>" + 
            "</tr>";
    });
    $("#table-list").html(tags);
}

Что можно улучшить в этом коде:

  • не использовать конкатенации строк для создания дерева DOM. Используйте перегрузку jQuery( html, props ).
  • не кодируйте URL-адрес ваших Details якорей -> используйте помощники URL для его генерации.
1 голос
/ 10 февраля 2012

В вашем контроллере попробуйте:

return Json(jsonData);

Это вернет JsonResult.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...