Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > CheckBox с тремя состояниями


Автор: Dblma 4.3.2009, 13:20
Собственно, сабж.

Единственно, CheckBox - сам по себе, а не в составе какого-нибудь DataGrid'а или TreeView.

Автор: Mymik 4.3.2009, 14:21
Сам такого никогда не делал, но подозреваю, что можно добавить какое-нибудь HiddenField в котором будет прописываться значение dirty после первого нажатия на сам CheckBox. Ну и в самом коде тоже надо будет переопределить свойство Checked и проставлять в нем эту же строчку для dirty...  smile Это как вариант. Возможно и красивее как-то можно сделать.


Цитата(Dblma @  4.3.2009,  13:20 Найти цитируемый пост)
не в составе какого-нибудь DataGrid'а или TreeView
Прочитав это, можно предположить, что такое уже видел ТС. Тогда поковыряйся и пойми как оно работает в составе тех элементов и выкуси то что тебе необходимо. 

Автор: Dblma 4.3.2009, 16:18
Сам по себе CheckBox в ASP.NET (да и вообще в HTML) не имеет 3-го состояния.

К счастью в данном случае он нужен всего в 1 месте - использовал просто ImageButton с меняющимися картинками (костыль, в общем). А так пришлось бы писать свой контрол.

По-поводу этого:
Цитата
Прочитав это, можно предположить, что такое уже видел ТС.

На самом деле не юзал никогда, да и не обращал внимания особо - но предполагаю, что у TreeView (или в подобном контроле) должен быть встроен чекбокс с 3 состояниями - иначе как отображать ЧекБокс, у которого часть потомков зачекены, а часть - нет.

Автор: Любитель 4.3.2009, 19:09
Стандартный инпут никак не прокатит. Только картинка.

Цитата(Dblma @  4.3.2009,  16:18 Найти цитируемый пост)
использовал просто ImageButton с меняющимися картинками (костыль, в общем)

Не костыль, так как нативного решения нет. Единственное, если речь именно про ImageButton - то это postback на каждый клик smile Реализуй свой контрол. В нём регистришь startup-скрипт, который подгрузит картинки для состояний. В самом контроле - одна картинка и хидден-поле (для хранения состояния элемента и простой отсылки его на сервер). Чтоб было проще - оборачиваешь их в див (ему как ид-шник даёшь ClientID контрола). На клиенте подписываешься на click по картинке, по которому получаешь текущее состояние (значение hidden-поля, являющегося следующем элементом после DOM-элемента картинки), меняешь на следующее, ставишь картинку.

Как-то так smile

Автор: Dblma 5.3.2009, 11:20
Приблизительно так и сделал, всем спасибо.

Автор: sobik 10.3.2009, 16:12
Странно как то звучит Чекбокс с тремя состояниями. Чекбокс по умолчанию предназначен для отображения булевских переменных или битовых : 1 или 0. Если тебе надо сделать что-то что бы отображало три состояния, например: {начальное, сделал,  недоделал}, то, как мне кажеться, уже просто сделать РадиоГруппу с тремя пунктами. Или специфика задачи не позволяет?

Автор: Любитель 10.3.2009, 16:38
Ну в десктопных же приложениях делают smile Тут вопрос не юзабилити, а технической возможности. Можно и комбобокс сделать с нужными вариантами.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)