как отображать флажки в форме только для чтения (ASP.NET) - PullRequest
3 голосов
/ 07 мая 2011

У меня есть форма только для чтения, автоматически заполняемая из базы данных.У меня есть несколько полей со значениями true / false, и я хотел бы, чтобы они отображались как флажки, которые либо пусты, либо отмеченыЯ могу привязать данные к элементу управления флажком и отключить его, но затем он отображается серым цветом.Есть ли простой способ изменить это так, чтобы он отображался с нормальной, легко читаемой смелостью, но все еще был отключен?Если нет, каков наилучший способ сделать это?Должен ли я использовать изображение?

Ответы [ 4 ]

6 голосов
/ 07 мая 2011

Вы также можете пойти вот так.

<asp:CheckBox id="checkbox1" Text="Custom" onclick="javascript: return false;" />

Что будет отображать его как

<input type="checkbox"
checked  onclick="javascript: return false;">Custom</input>
3 голосов
/ 07 мая 2011

Интересный вопрос!

Существует только одна проблема, которую я вижу при использовании изображений вместо обычных флажков, и именно поэтому флажки active будут отличаться от отключенных(на основе изображения) флажки.Так что, если вы пойдете по маршруту с изображением, вы, вероятно, захотите установить все флажки.:)

Вы можете эффективно отключить любой флажок с помощью следующего метода jQuery (пока что я тестировал только в Chrome и IE 9).

$('.readonly:checkbox').click(function(e) {
    e.preventDefault();
});

Это «отключит» любой флажок с помощью класса «только для чтения».

Или вы можете использовать встроенную функцию JavaScript (не рекомендуется использовать albiet, поскольку она добавляет беспорядок и путаницу):

<input type="checkbox" onclick="event.preventDefault();" />

Причина, по которой вы будете использовать «protectDefault ()» вместо «return false», заключается в том, что возвращение false остановит распространение.Это означает, что ваше событие щелчка не будет пузыриться на родительский элемент.Это может вызвать проблемы с другим кодом ... но это маловероятно.

Кроме того, как упомянул Bala R, вы не должны полагаться на эти ограничения для работы.Ваш серверный код должен знать, что эти значения доступны только для чтения, и воздерживаться от их обновления.

Вот пример jsFiddle: http://jsfiddle.net/xixionia/3rXCB/

Надеюсь, это полезно!:)

1 голос
/ 05 апреля 2013

У меня была такая же проблема, и я исправил ее с помощью события OnClick на флажке. В обработчике события состояние .Checked установлено равным значению, которое должно отображаться.

private void chkBox_CheckStateChanged(object sender, EventArgs e)
    {
        chkBox.Checked = boolDatabasevalue;
        return;
    }

Отлично работает, пользователь может нажать на флажок, но флажок не меняется.

Единственная проблема - небольшая тень границы, указывающая на Фокус. Но галочка, как и ожидал OP, была легко читаемой смелостью.

Примечание: это C #, но в Asp.Net это должно работать аналогично.

1 голос
/ 07 мая 2011

Вы можете сделать что-то подобное с javascript и использовать его для обработчика onclick флажка.

jsFiddle link

function makeMeReadonly(checkbox){
    checkbox.checked = !checkbox.checked;
}

и

<asp:CheckBox id="checkbox1" onclick="makeMeReadonly(this)" />

или

<asp:CheckBox id="checkbox1" onclick="this.checked = !this.checked" />

, если хотите, чтобы они были встроены.

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

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