![]() |
|
Модераторы: gambit |
![]()
|
|
| Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: 2 Всего: 5 |
Не работает строчка string col2Value = Bind("Col_2");. Как получить для переменной col2Value значение ячейки? |
|||
|
||||
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 1 Всего: 13 |
GridView, DetailsView и FormView - единственные элементы управления, где можно использовать Bind. Теоретически нужно ругнуться и на
Попробуй использовать Eval или Container.чтототам. Что вообще должен делать сей код? -------------------- ![]() |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Должен динамически формировать template на основании значений свойств. У меня вообще большие сомнения по поводу того, можно ли вставлять код в template... |
|||
|
||||
| Idsa |
|
||||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Pankon, вставлять inline код в темплейт нельзя.
Есть 2 выхода. 1. Воспользоваться вспомогательным методом.
Свойство Text элемента Label теперь динамически формируется на основании значения Eval("Column1"). Стоит обратить внимание на то, что возвращаемое методом значение в любом случае интерпретируется как строка. Т. е. если бы метод возвращал, например, TextBox, выражение <%# this.MethodWhichReturnsTextBox() %> вернуло бы строку "System.Web.UI.WebControls.TextBox". В результате GridView состоял бы не из элементов TextBox, а из малосодержательных надписей. Это чем-то напоминает WinForms'овские ListBox и ComboBox. Там тоже в Items можно хранить любые объекты, но отображается object.ToString(). Весьма печальное зрелище. Слава Богу, на смену WinForms пришел WPF 2. Перехватить метод RowDataBound
Очевидно, этот метод гораздо более гибкий. Правда, есть недостаток - обращение к ячейкам и контролам по индексам: малейшее изменение разметки сделает этот обработчик нерабочим. С этим приходится мириться. Кстати, здесь есть еще одна интересная возможность. Можно вот так не паритсья:
, получая каждое значение по отдельности через Reflection. Можно просто привести тип e.Row.DataItem. В случае баиндинга таблицы тип будет DataRowView. Тогда можно обращаться вот так:
, не расходуя лишний раз процессорное время на Reflection. Хотя это не самый лучший пример. Гораздо более очевидным приведение e.Row.DataItem является при баиндинге коллекции пользовательских типов:
Все-все, закругляюсь P. S. Я изложил свои видение баиндинга к DataGridView. Если у кого-то есть дополнения, буду рад ознакомиться. |
||||||||||||||
|
|||||||||||||||
| Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: 2 Всего: 5 |
||||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Pankon, во как! Что-то я погорячился. Спасибо за поправку. +1.
Вам стоит посетить вот эту тему. Там есть несколько постов о том, что писать, используя <% , плохо (особенно в темплейтах). Подобную логику все-таки лучше реализовать в RowDataBound. А в тему того, почему не работает код в первом посте... Дело в том, что <% выполняется на этапе рендеринга. Баиндинг же происходит раньше. Поэтому неудивительно, что вот такой код:
вызывает InvalidOperationException с текстом "Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.". Ну действительно, ведь Eval(string expression) - короткая запись DataBinding.Eval(object container, string expression)... а container определен только при binding'е. Это сообщение отредактировал(а) Idsa - 7.7.2008, 18:35 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |