#asp.net-mvc #sorting #grid.mvc
#asp.net-mvc #сортировка #grid.mvc
Вопрос:
Сетка.Сортировка MVC работает не так, как ожидалось. Например, у меня есть столбец с числовым значением, а также значениями даты. Предоставленные снимки экрана показывают, что только общая сортировка премиум-класса работает неправильно, но то же самое происходит и в столбце Дата вступления в силу. Есть ли что-то еще, что мне нужно сделать, чтобы указать его номер или дату, чтобы он правильно сортировался?
@Html.Grid(Model.SearchResult).Named("searchGrid").Columns(col =>
{
col.Add(c => c.PolicyNumber).Titled("Number").Sortable(true);
col.Add(c => c.FormattedInsuredName).Titled("Insured Name").Sortable(true);
col.Add(c => c.FormattedAddress).RenderValueAs(m => Html.Raw(m.FormattedAddress)).Encoded(false).Sanitized(false).Titled("Property Address").Sortable(true);
col.Add(c => c.Status).Titled("Status").Sortable(true);
col.Add(c => c.FormattedEffectiveDate).Titled("Effective Date").Sortable(true);
col.Add(c => c.FormattedTotalPremium).Titled("Total Premium").Sortable(true);
col.Add().Encoded(false).SetWidth(150).Sanitized(false).Titled("Action").RenderValueAs(dd => Html.DropDownList("ddlAction", dd.DropDownActions, new { @class = "form-control ddlAction", @data_viewquote = dd.QuoteURL }));
}).WithPaging(25).Sortable(true)
На снимке экрана ниже вы можете видеть, что столбец Total Premium сортируется неправильно. Есть снимки экрана как для ASC, так и для DESC.
Комментарии:
1. Похоже, что вы сортируете их как строки, а не как целые числа; Они сортируются в алфавитном порядке, поэтому 1226 будет предшествовать 223. Вам нужно будет преобразовать их в целое число перед сортировкой. Я прошу прощения за то, что не предоставил точный метод для этого, я не очень хорошо знаком с MVC — просто подумал, что это укажет вам правильное направление.
2. Просто чтобы отметить мой предыдущий комментарий, то же самое касается дат. Вам нужно преобразовать их в соответствующий тип.
3. Ну, это было просто. Столбцы форматировались в строки из их начальных типов. С этим разобрались, и теперь он сортируется правильно. Спасибо за комментарий.
4. Нет проблем, я был сожжен по той же проблеме!
Ответ №1:
Спасибо Санти за комментарий.
Тип для модели форматировался в строку, чтобы показать определенный формат, прежде чем он попадет в сетку. Удалено форматирование строк и перенесено форматирование в сетку, чтобы разрешить сортировку по правильному типу и по-прежнему отображать форматирование. Новая сетка ниже с дополнительной .Форматирование () фрагментов.
@Html.Grid(Model.SearchResult).Named("searchGrid").Columns(col =>
{
col.Add(c => c.PolicyNumber).Titled("Number").Sortable(true);
col.Add(c => c.FormattedInsuredName).Titled("Insured Name").Sortable(true);
col.Add(c => c.FormattedAddress).RenderValueAs(m => Html.Raw(m.FormattedAddress)).Encoded(false).Sanitized(false).Titled("Property Address").Sortable(true);
col.Add(c => c.Status).Titled("Status").Sortable(true);
col.Add(c => c.FormattedEffectiveDate).Titled("Effective Date").Sortable(true).Format("{0:MM/dd/yyyy}");
col.Add(c => c.FormattedTotalPremium).Titled("Total Premium").Sortable(true).Format("{0:C2}");
col.Add().Encoded(false).SetWidth(150).Sanitized(false).Titled("Action").RenderValueAs(dd => Html.DropDownList("ddlAction", dd.DropDownActions, new { @class = "form-control ddlAction", @data_viewquote = dd.QuoteURL }));
}).WithPaging(25).Sortable(true)