Как отобразить флажок в строке заголовка с помощью MvcContrib?

Я пытаюсь отобразить флажок «Выбрать все» в строке заголовка моей сетки, используя следующее.

column.For(x => Html.CheckBox("InvoiceSelection", false, new {@class = "checkbox reqPayment ", value = x.InvoiceId}))
          .Header(o=>"<th><input type=\"checkbox\" id='chkHeader' />Select All</th>")
          .Encode(false)
          .HeaderAttributes(@class => "text-error");

Однако это не отображается должным образом и вместо этого отображается с <a> в качестве содержимого.

<tr><th class="text-error"><a href="/Invoices?Direction=Ascending"></a></th>

Флажки «строка» отображаются правильно и уже пробовали это решение безуспешно, но не уверен, что это применимо к пакету Nuget, который я использую в данный момент - MvcContrib.Mvc3- версия 3.0.100


person Ahmad    schedule 01.12.2013    source источник


Ответы (1)


Я протестировал приведенный выше код с той же версией, и он отлично работает для меня.

Возможно, стоит проверить следующее:

У вас есть конкретная ссылка в представлении?

@using MvcContrib.UI.Grid

Его можно перепутать с другим помощником Html.Grid, если вы использовали другой помощник в другом месте проекта.

Может ли быть какой-то другой фактор, который впоследствии добавляет функциональность сортировки, например плагин jQuery?

Изменить (по автору вопроса)

@hutchonoid поднял хороший вопрос о «других факторах», в результате чего я нашел решение.

Есть некоторые замечания по поводу окончательного решения

  • Если вы используете сортируемую сетку, вам нужно установить Sortable(false) в столбце
  • Элемент <th> не нужен
  • Решение, которое я использовал

    column.For(x => Html.CheckBox("InvoiceSelection", false, new {@class = "checkbox reqPayment ", value = x.InvoiceId}))
          .Header(o=>"<input type=\"checkbox\" id='chkHeader' />")
          .Encode(false)
          .Sortable(false)
          .HeaderAttributes(new Dictionary<string, object> { { "style", "width:20px" } }); 
    
  • Добавьте для полноты, вот JS, который переключает функцию «Выбрать все»

    $(document).ready(function () {
        $('#chkHeader').change(function() {
            if ($(this).is(':checked')) {
                $('.reqPayment').attr('checked', 'checked');
            } else {
                $('.reqPayment').removeAttr('checked');
            }
        });
    }); 
    
person hutchonoid    schedule 01.12.2013
comment
У меня нет других плагинов, и у меня есть правильные ссылки. Отображает ли ваш результат флажок в строке заголовка? - person Ahmad; 01.12.2013
comment
Это так, я сделал это с помощью простой установки mvc из коробки нового проекта. - person hutchonoid; 01.12.2013
comment
после некоторых копаний потребовалось несколько дополнительных настроек. необходимо удалить обертки th - person Ahmad; 01.12.2013
comment
Хороший. Рад, что исправили. Я буду следить за этим в будущем. - person hutchonoid; 01.12.2013