Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Привет всем. Начал недавно работать с DetailsView и сразу появилось несколько вопросов. Например: 1) Как добрараться до элемента в DetailsView? Т.е у меня есть шаблонный элемент и в нем кнопка <asp:TemplateField ShowHeader="False"> <ItemTemplate> <asp:Button ID="btnPost" runat="server" Text="Post" OnClick="Button1_Click" /> </ItemTemplate> </asp:TemplateField> И мне надо до нее достучаться программно. Я нашел вариант преобразования в таблицу, а затем dt.Rows[5].Cells[1].Controls[3], но подозреваю, что это не самый здоровый способ... 2) Насколько я понял официально с помощью декларативного связывания можно задавать любые параметры, а вот можно при этом как то все декларативно преобразовывать? Например: есть таже кнопка и в зависимости от того приходит из базы время финиширования или нет я хочу скрывать ее или оборажать. <asp:Button ID="btnPost" runat="server" Text="Post" OnClick="Button1_Click" Visible='<%# Eval("DatePosted") %>' /> Такая конструкция выдает ошибку преобразования (Specified cast is not valid) с которой я полностью согласен — так можно ли как ниубдь преобразовыть из одного формата в булеан или надо только из базы возвращать сразу Bit? 3) И в принципе тот же первый вопрос только со стороны клиента: как достучаться до элемента? Тем более если еще и мастер страницы используются... потому что то что генерит студия просто завораживает: <textarea name="ctl00$Main$dvBuyRequest$txtBoxDetails" rows="2" cols="20" id="ctl00_Main_dvBuyRequest_txtBoxDetails"></textarea> Т.е это преждем чем писать JavaScript надо отрендерить страницу, посмотреть id и потом уже использовать с ним document.getElementById? А если кто то решит имя plaveholderа поменять это на всех страницы скрипты здохнут... Заранее всем спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 11:35 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Skywalker666, Вы писали: S>1) Как добрараться до элемента в DetailsView? Т.е у меня есть шаблонный элемент и в нем кнопка control.FindControl("name") S>2) Насколько я понял официально с помощью декларативного связывания можно задавать любые параметры, а вот можно при этом как то все декларативно преобразовывать? Например: есть таже кнопка и в зависимости от того приходит из базы время финиширования или нет я хочу скрывать ее или оборажать. a)(boolean)Eval("DatePosted") b)Convert.ToBoolean(Eval("DatePosted")) b)вызывать объявленный в классе метод S>3) И в принципе тот же первый вопрос только со стороны клиента: как достучаться до элемента? Тем более если еще и мастер страницы используются... потому что то что генерит студия просто завораживает: Если контрол находится в дереве элементов, то у него ID на стороне клиента находится через свойство ClientId. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 11:44 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. N_C>Здравствуйте, Skywalker666, Вы писали: S>>1) Как добрараться до элемента в DetailsView? Т.е у меня есть шаблонный элемент и в нем кнопка N_C>control.FindControl("name") А если у меня используются мастер страницы, то я так понимаю надо сделать рекурсивную функцию с FindControl — что бы оно сразу все просмотрело такого нет? S>>2) Насколько я понял официально с помощью декларативного связывания можно задавать любые параметры, а вот можно при этом как то все декларативно преобразовывать? Например: есть таже кнопка и в зависимости от того приходит из базы время финиширования или нет я хочу скрывать ее или оборажать. N_C>a)(boolean)Eval("DatePosted") N_C>b)Convert.ToBoolean(Eval("DatePosted")) N_C>b)вызывать объявленный в классе метод А с Bind такое провернуть нельзя? S>>3) И в принципе тот же первый вопрос только со стороны клиента: как достучаться до элемента? Тем более если еще и мастер страницы используются... потому что то что генерит студия просто завораживает: N_C>Если контрол находится в дереве элементов, то у него ID на стороне клиента находится через свойство ClientId. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 12:56 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
S>А если у меня используются мастер страницы, то я так понимаю надо сделать рекурсивную функцию с FindControl — что бы оно сразу все просмотрело такого нет? Не понял, а что такое с мастер-страницей? S>А с Bind такое провернуть нельзя? А Bind тебе зачем для свойства Visible? Bind важен только для автоматического формирования параметров для запросов Update и Insert... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 13:12 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
1. Лучше это делать все таки в собітиях RowCreated/RowDataBound - тогда e.Row.FindControl() найдет тебе нужный контрол в текущей строке. 3. Bind предназначен для двунаправленного биндинга и в этом случае не имеет смысла. Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 13:59 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Nikolay_Ch, Вы писали: S>>А если у меня используются мастер страницы, то я так понимаю надо сделать рекурсивную функцию с FindControl — что бы оно сразу все просмотрело такого нет? N_C>Не понял, а что такое с мастер-страницей? Ну дык, как, — Master Pages у которых есть контенты и все такое... Я так понял FindControl ищет на верхнем уровне, потому что пока я не сделал рекурсивную функцию оно мне ничего не находило... S>>А с Bind такое провернуть нельзя? N_C>А Bind тебе зачем для свойства Visible? Bind важен только для автоматического формирования параметров для запросов Update и Insert... Не, Bind мне не для Visible — это мне уже для текстбоксов если я хочу у них что то с текстом делать перед выводом — то это только через PreRendering или можно как так же удобно как с Eval свои функции вызывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 14:14 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
S>Не, Bind мне не для Visible — это мне уже для текстбоксов если я хочу у них что то с текстом делать перед выводом — то это только через PreRendering или можно как так же удобно как с Eval свои функции вызывать? Думаю с Bind такая функциональность будет немного некорректна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 14:35 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Nikolay_Ch, Вы писали: S>>Не, Bind мне не для Visible — это мне уже для текстбоксов если я хочу у них что то с текстом делать перед выводом — то это только через PreRendering или можно как так же удобно как с Eval свои функции вызывать? N_C>Думаю с Bind такая функциональность будет немного некорректна. Да и вот здесь такой интересный баг выплыл: мой DetailsView при заходе на страницу отображается в режиме Edit, человек редактирует, нажимает Update, контрол переходит в ReadOnly и если надо можно опять нажать Edit и перейти в режим редактирования — стандартная функциональность. Но вот что интересно в начале когда я делаю FindControl для Textbox он его находит, потом при перезагрузке в ReadOnly он тоже его находит (!!! — хотя там только лейбла а текстбокса нет), но когда человек опять нажимает Edit и возвращается для редактирования — его нет!!! Я конечно понимаю что где нибудь во вViewState его может не быть т.к. оно возвращается из режима ReadOnly, но когда я первый раз захожу на страницу у меня ж вроде бы тоже не особенно много ViewState... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 15:03 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
S>Да и вот здесь такой интересный баг выплыл: мой DetailsView при заходе на страницу отображается в режиме Edit, человек редактирует, нажимает Update, контрол переходит в ReadOnly и если надо можно опять нажать Edit и перейти в режим редактирования — стандартная функциональность. Но вот что интересно в начале когда я делаю FindControl для Textbox он его находит, потом при перезагрузке в ReadOnly он тоже его находит (!!! — хотя там только лейбла а текстбокса нет), но когда человек опять нажимает Edit и возвращается для редактирования — его нет!!! Я конечно понимаю что где нибудь во вViewState его может не быть т.к. оно возвращается из режима ReadOnly, но когда я первый раз захожу на страницу у меня ж вроде бы тоже не особенно много ViewState... ? Скорее всего это не глюк. А следствие того, как работают эти контролы. Сначала он пересоздается с первоначальным состоянием. Потом вызываются нужные события, а затем он опять пересоздается уже с новым состоянием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 15:08 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Nikolay_Ch, Вы писали: S>>Да и вот здесь такой интересный баг выплыл: мой DetailsView при заходе на страницу отображается в режиме Edit, человек редактирует, нажимает Update, контрол переходит в ReadOnly и если надо можно опять нажать Edit и перейти в режим редактирования — стандартная функциональность. Но вот что интересно в начале когда я делаю FindControl для Textbox он его находит, потом при перезагрузке в ReadOnly он тоже его находит (!!! — хотя там только лейбла а текстбокса нет), но когда человек опять нажимает Edit и возвращается для редактирования — его нет!!! Я конечно понимаю что где нибудь во вViewState его может не быть т.к. оно возвращается из режима ReadOnly, но когда я первый раз захожу на страницу у меня ж вроде бы тоже не особенно много ViewState... ? N_C>Скорее всего это не глюк. А следствие того, как работают эти контролы. Сначала он пересоздается с первоначальным состоянием. Потом вызываются нужные события, а затем он опять пересоздается уже с новым состоянием. Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать? (кстати, не по теме но давно мучает — а эти события есть гденибудь полным списком — ну вот как, выбираю я нужный контрол, нажимаю Events в Properties и у меня список всех событий — а для страницы такое можно найти?) А вообще идея в следующем — я нахожу контрол и регистрирую для JavaScript его ClientId что бы потом можно было использовать на странице. Может кто знает как это легче можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 15:42 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
S>Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать? OnLoad страницы и обработка события DV на странице. S>(кстати, не по теме но давно мучает — а эти события есть гденибудь полным списком — ну вот как, выбираю я нужный контрол, нажимаю Events в Properties и у меня список всех событий — а для страницы такое можно найти?) Вроде как раньше надо было щелкнуть правой кнопкой на объект в то-ли Object Viewer'е, то-ли Project Explorer'е... S>А вообще идея в следующем — я нахожу контрол и регистрирую для JavaScript его ClientId что бы потом можно было использовать на странице. Может кто знает как это легче можно сделать? Попробуй отловить событие OnRender страницы (наверное)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 16:59 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Nikolay_Ch, Вы писали: S>>Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать? N_C>OnLoad страницы и обработка события DV на странице. Нет в OnLoad — фантастика просто какая то... А что за событие DV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 17:36 |
|
||
|
Получение элементов из DetailsView и Eval
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Skywalker666, Вы писали: S>Здравствуйте, Nikolay_Ch, Вы писали: S>>>Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать? N_C>>OnLoad страницы и обработка события DV на странице. S>Нет в OnLoad — фантастика просто какая то... S>А что за событие DV? Как показала практика нашлись нужные элементы только в событии PreRender у DetailsView. Причем даже в правильном порядке — если это ReadOnly mode — то вот вам лейбла, если Edit — распишитесь за Textbox... Вобщем всем спасибо за помощь, особенно Николаю. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2006, 11:22 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33826463&tid=1392129]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
90ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 431ms |

| 0 / 0 |
