проблема сортировки с таблицами данных и jsonresult

#jquery #asp.net-mvc #json

#jquery #asp.net-mvc #json

Вопрос:

Я использую массивы данных (datatables.net ) в сочетании с sAjaxSource

вот так

  $(document).ready(function() {


            $('#userTable').dataTable({
                "sAjaxSource": '<%= Url.Action("GetUserData", "Home") %>',
                "bJQueryUI": true,
                "sPaginationType": "full_numbers",
                "bStateSave": true,
                "bRetrieve": true,
                "aoColumns":
             [
                { "bSortable": false },
                null,
                { "sType": "title-string" },
                null,
                null,
                null,
                null,
                null
             ]
            });
        });
  

серверный метод для этого выглядит следующим образом

 public JsonResult GetUserData()
{
   IList<string[]> userList = GetUserList();
   var sendData = new{aaData = userList};
   return new JsonResult {JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = sendData};
}
  

здесь все работает нормально, я могу видеть данные в таблице.
но некоторые из моих свойств пользователя включают некоторые ссылки на изображения
например

   userData[0] = string.Format("<img src='{0}' alt='{1}' title='{1}' />", picUrl, title);
  

но в самой таблице всегда отсутствует «/». таким образом, сортировка по этим столбцам не работает. если я выполняю

  userData[0] =  string.Format("<img src='{0}'></img>", imgUrl);
  

отсутствует конечный тег… в табличной ячейке значение всегда

 <img src='url' title='abc'>
  

таким образом, либо ‘/’ отсутствует, либо весь конечный тег img.

начало результата json:

 {"aaData":[["u003cimg src=u0027/Content/image.pngu0027 class=u0027profilePictureu0027 /u003e", ...[other elements]
  

была ли у кого-нибудь еще такая проблема?

редактировать: я только что заметил, что он также преобразует ‘ в »

Ответ №1:

Единственное, что вы можете сделать, это для столбцов изображений определить свой собственный метод сортировки и переопределить то, что datatables выполняет изначально. Таким образом, вы можете игнорировать изображения или делать с ними все, что захотите.

Комментарии:

1. хм, да, это правда, но странная вещь заключается в том, что либо таблицы данных, либо что-то еще изменяет строку, которую я возвращаю…

2. @nWorx — Я бы проверил JSON, который возвращается с сервера, чтобы увидеть, является ли это причиной. Если нет, то это где-то выше в дереве. Однако я заметил, что инспектор Chrome не показывает закрытие /> для тегов изображений, так что это может быть еще одной возможной проблемой, которая происходит.

3. я проверил это также с firefox (плагин firebug), тег < /img> отсутствует… я кое-что добавил <span></span>, и тег span работает… я отредактирую свой первоначальный пост и добавлю некоторый результат в формате json..

Ответ №2:

хорошо, я нашел решение..

проблема отсутствия сортировки не была отсутствующей / или вместо этого я просто изменил

 userdata[0] = string.Format("<img src='{0}' alt='{1}' title='{1}' />", picUrl, title);
  

Для

 userdata[0] = string.Format("<img src='{0}' alt='{1}' title="{1}" />", picUrl, title);
  

и чем это помогло 🙂

я не знаю почему, но это происходит 🙂

спасибо @cdeszaq за вашу поддержку