![]() |
|
Модераторы: gambit |
![]()
|
|
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
На форме стоит RadioButtonList, заполняется данными из БД.
Задача: чтобы на основании данных любая строка могла изменять свойства (цвет, фон, текст, размер, добавить картинку). Т.е. фактически надо получить обработку а-ля RowCreated для GridView. Подскажите, кто знает. Или как эту задачу реализовать другими способами. Пробовал в GridView вставлять RadioButton, и назначать им общий GroupName... Но GridView добавляет свои понты в это поле, и браузер не воспринимает группу как группу, а получается набор отдельных RadioButton"ов... |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Вообще это делается с помощью JavaScript... Но можно делать и с помощью AutoPostBack.
Первый вариант конечно правельнее и логичнее... А второй вариант -->> AutoPostBack="true" OnSelectedIndexChanged="<твой обработчик событий на сервере>" Первый вариант приемлим если тебе нужно сделать незначительные изменения(отображение невидимого div, или изменения Background). Второй вариант используется в тех случаях когда тебе нужно перегенерить сайт, забрать данные из базы или сгенерить другую картинку (хотя сгенерить другую картинку мона с помощью подмены src у картинки :о) ) -------------------- |
|||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
Ни JavaScript ни AutoPostBack не подходит...
Не надо изменять свойства на стороне клиента. на стороне сервера вполне достаточно. Необходимо и достаточно изменить свойства айтема RadioButtonList при получении данных из БД. Например, получаем список вариантов, пишем их в RadioButtonList, затем рекомендуемый вариант подсвечиваем зеленым, а крайне не рекомендуемый (но все же возможный) красным... Отображаем все это дело клиенту. Ну а дальше клиент делает выбор и постит результат... |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
dazy, я просто не понял твой вопрос...
Ну если в зависимости от пришедших данных из СУБД, тогда <%= Eval("field") == "red" ? style="color:red" : style="color:black" %> Если я опять таки правильно тебя понял... Или ты уже и сам со всем разобрался :о) -------------------- |
|||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
Спасибо большое, то что надо!!!
Ну я примерно так и думал, только вот ни как эти <%-выражения не освою... Блин, все хорошо, но МS хоть бы какой конструктор этих выражений встроили, что ли.... Иной раз такие конструкции получаются, хоть небоскреб возводи... |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
dazy, смотри <%= это все равно что Response.Write() а дальше идет самая стандартная конструкция условия, а Eval... ну надо запомнить :о).
Это быстро с опытом прийдет, пару GridView построишь или еще каких-нибудь контролов где есть DataSource и сразу запомнишь. -------------------- |
|||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
Что я рано радовался, похоже...
Я с RadioButton попробовал, там получается, а с RadioButtonList ни как не пойму куда эту конструкцию биндить :((( Там в дизайн-тайм нету доступа к итему, только к RadioButtonList в целом... В общем если не сложно, покажите куда чего вставлять... блин :( |
|||
|
||||
| Mymik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
dazy, я сначала думал что мона это сделать с помощью
<имя твоего RadioButtonList>.Items[n].Attributes.CssStyle.Add() но оказалось что так нельзя :о) хотя с точки зрения синтаксиса написано тут все правильно, однако :о)... Вобщем продолбавшись полтора часа над этой задачей вместо того чтобы работать (а что, задача простая вроде бы, но интересная) я зашел в гугл и матюкаясь начал искать :о)... и... вобщем это баг такой у .NET Framework :о)... так что не судьба тебе такое сделать с помощью веб-контролов Вобщем додумался пока что только до такого решения -->> это сам Default.aspx
-------------------- |
||||
|
|||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
Я вот что придумал
Только как значение проверять еще не понял... Т.е. в табличке 3 поля id, text и isRight. id заносится в DataValueField , text заносится в DataTextField а вот на основании isRight должен меняться внешний вид. У меня такой вариант зреет, заранее получать id для поля isRight, а потом в DataBound в цикле перебирать все итемы на предмет совпадения Items[i].Value и id ... |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
dazy, прикольно, а у тебя работает Items[0].Attributes.CssStyle.Add ??? У меня просто не работает и все... когда дебагером смотрю, то все как бы и должно собираться... а в итоге эта строчка не работает... точнее значения присваиваются, а в браузер к пользователю не уходят...
Я так понял ты берешь данные из базы... тогда не скармливай данные сразу твоему контролу, а сохрани в какое-нибудь private поле, и в твоем методе бери данные оттуда. -------------------- |
|||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
||||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 4 Всего: 8 |
Нашел способ вот так вот сделать. Как мне кажется, проще и удобнее.
Таким образом все делается в одном месте. И данные на прямую запихиваются, и проверка идет "на лету". Можно радио в одну ячейку вставлять а текст в другую, и у ячейки менять все что угодно, вроде и иконку можно добавить. В общем получилось широкое поле для деятельности. Кроме того при нажатии на кнопку идентификатор возвращается нормальный (правда через коллекцию формы, ну и ладно), не надо все радио на чекед проверять. В общем можно еще пооптимизировать, но в и целом так вот мне придумалось. Вроде справились Это сообщение отредактировал(а) dazy - 5.1.2007, 12:56 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |