powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Получение элементов из DetailsView и Eval
14 сообщений из 14, страница 1 из 1
Получение элементов из DetailsView и Eval
    #33823689
Skywalker666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.

Начал недавно работать с 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а поменять это на всех страницы скрипты здохнут...

Заранее всем спасибо :)
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33823734
Nikolay_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Skywalker666, Вы писали:

S>1) Как добрараться до элемента в DetailsView? Т.е у меня есть шаблонный элемент и в нем кнопка
control.FindControl("name")

S>2) Насколько я понял официально с помощью декларативного связывания можно задавать любые параметры, а вот можно при этом как то все декларативно преобразовывать? Например: есть таже кнопка и в зависимости от того приходит из базы время финиширования или нет я хочу скрывать ее или оборажать.
a)(boolean)Eval("DatePosted")
b)Convert.ToBoolean(Eval("DatePosted"))
b)вызывать объявленный в классе метод

S>3) И в принципе тот же первый вопрос только со стороны клиента: как достучаться до элемента? Тем более если еще и мастер страницы используются... потому что то что генерит студия просто завораживает:
Если контрол находится в дереве элементов, то у него ID на стороне клиента находится через свойство ClientId.
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824049
Skywalker666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.

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.
Спасибо
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824118
Nikolay_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S>А если у меня используются мастер страницы, то я так понимаю надо сделать рекурсивную функцию с FindControl — что бы оно сразу все просмотрело такого нет?
Не понял, а что такое с мастер-страницей?

S>А с Bind такое провернуть нельзя?
А Bind тебе зачем для свойства Visible? Bind важен только для автоматического формирования параметров для запросов Update и Insert...
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824285
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Лучше это делать все таки в собітиях RowCreated/RowDataBound - тогда e.Row.FindControl() найдет тебе нужный контрол в текущей строке.
3. Bind предназначен для двунаправленного биндинга и в этом случае не имеет смысла.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824344
Skywalker666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Nikolay_Ch, Вы писали:

S>>А если у меня используются мастер страницы, то я так понимаю надо сделать рекурсивную функцию с FindControl — что бы оно сразу все просмотрело такого нет?
N_C>Не понял, а что такое с мастер-страницей?
Ну дык, как, — Master Pages у которых есть контенты и все такое... Я так понял FindControl ищет на верхнем уровне, потому что пока я не сделал рекурсивную функцию оно мне ничего не находило...

S>>А с Bind такое провернуть нельзя?
N_C>А Bind тебе зачем для свойства Visible? Bind важен только для автоматического формирования параметров для запросов Update и Insert...
Не, Bind мне не для Visible — это мне уже для текстбоксов если я хочу у них что то с текстом делать перед выводом — то это только через PreRendering или можно как так же удобно как с Eval свои функции вызывать?
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824415
Nikolay_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S>Не, Bind мне не для Visible — это мне уже для текстбоксов если я хочу у них что то с текстом делать перед выводом — то это только через PreRendering или можно как так же удобно как с Eval свои функции вызывать?
Думаю с Bind такая функциональность будет немного некорректна.
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824522
Skywalker666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Nikolay_Ch, Вы писали:

S>>Не, Bind мне не для Visible — это мне уже для текстбоксов если я хочу у них что то с текстом делать перед выводом — то это только через PreRendering или можно как так же удобно как с Eval свои функции вызывать?
N_C>Думаю с Bind такая функциональность будет немного некорректна.

Да и вот здесь такой интересный баг выплыл: мой DetailsView при заходе на страницу отображается в режиме Edit, человек редактирует, нажимает Update, контрол переходит в ReadOnly и если надо можно опять нажать Edit и перейти в режим редактирования — стандартная функциональность. Но вот что интересно в начале когда я делаю FindControl для Textbox он его находит, потом при перезагрузке в ReadOnly он тоже его находит (!!! — хотя там только лейбла а текстбокса нет), но когда человек опять нажимает Edit и возвращается для редактирования — его нет!!! Я конечно понимаю что где нибудь во вViewState его может не быть т.к. оно возвращается из режима ReadOnly, но когда я первый раз захожу на страницу у меня ж вроде бы тоже не особенно много ViewState... ?
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824535
Nikolay_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S>Да и вот здесь такой интересный баг выплыл: мой DetailsView при заходе на страницу отображается в режиме Edit, человек редактирует, нажимает Update, контрол переходит в ReadOnly и если надо можно опять нажать Edit и перейти в режим редактирования — стандартная функциональность. Но вот что интересно в начале когда я делаю FindControl для Textbox он его находит, потом при перезагрузке в ReadOnly он тоже его находит (!!! — хотя там только лейбла а текстбокса нет), но когда человек опять нажимает Edit и возвращается для редактирования — его нет!!! Я конечно понимаю что где нибудь во вViewState его может не быть т.к. оно возвращается из режима ReadOnly, но когда я первый раз захожу на страницу у меня ж вроде бы тоже не особенно много ViewState... ?
Скорее всего это не глюк. А следствие того, как работают эти контролы. Сначала он пересоздается с первоначальным состоянием. Потом вызываются нужные события, а затем он опять пересоздается уже с новым состоянием.
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824652
Skywalker666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Nikolay_Ch, Вы писали:

S>>Да и вот здесь такой интересный баг выплыл: мой DetailsView при заходе на страницу отображается в режиме Edit, человек редактирует, нажимает Update, контрол переходит в ReadOnly и если надо можно опять нажать Edit и перейти в режим редактирования — стандартная функциональность. Но вот что интересно в начале когда я делаю FindControl для Textbox он его находит, потом при перезагрузке в ReadOnly он тоже его находит (!!! — хотя там только лейбла а текстбокса нет), но когда человек опять нажимает Edit и возвращается для редактирования — его нет!!! Я конечно понимаю что где нибудь во вViewState его может не быть т.к. оно возвращается из режима ReadOnly, но когда я первый раз захожу на страницу у меня ж вроде бы тоже не особенно много ViewState... ?
N_C>Скорее всего это не глюк. А следствие того, как работают эти контролы. Сначала он пересоздается с первоначальным состоянием. Потом вызываются нужные события, а затем он опять пересоздается уже с новым состоянием.

Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать? (кстати, не по теме но давно мучает — а эти события есть гденибудь полным списком — ну вот как, выбираю я нужный контрол, нажимаю Events в Properties и у меня список всех событий — а для страницы такое можно найти?)

А вообще идея в следующем — я нахожу контрол и регистрирую для JavaScript его ClientId что бы потом можно было использовать на странице. Может кто знает как это легче можно сделать?
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33824928
Nikolay_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S>Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать?
OnLoad страницы и обработка события DV на странице.

S>(кстати, не по теме но давно мучает — а эти события есть гденибудь полным списком — ну вот как, выбираю я нужный контрол, нажимаю Events в Properties и у меня список всех событий — а для страницы такое можно найти?)
Вроде как раньше надо было щелкнуть правой кнопкой на объект в то-ли Object Viewer'е, то-ли Project Explorer'е...

S>А вообще идея в следующем — я нахожу контрол и регистрирую для JavaScript его ClientId что бы потом можно было использовать на странице. Может кто знает как это легче можно сделать?
Попробуй отловить событие OnRender страницы (наверное)...
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33825021
Skywalker666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Nikolay_Ch, Вы писали:

S>>Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать?
N_C>OnLoad страницы и обработка события DV на странице.
Нет в OnLoad — фантастика просто какая то...
А что за событие DV?
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33825622
Skywalker666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Skywalker666, Вы писали:

S>Здравствуйте, Nikolay_Ch, Вы писали:

S>>>Ух, как то интересно они создаются... Я уже пробовал FindControl и в OnLoadComplete и в OnPreRender нигде его нет — я вообще не понимаю как он на странице создается... Есть идеи где его еще можно поискать?
N_C>>OnLoad страницы и обработка события DV на странице.
S>Нет в OnLoad — фантастика просто какая то...
S>А что за событие DV?

Как показала практика нашлись нужные элементы только в событии PreRender у DetailsView. Причем даже в правильном порядке — если это ReadOnly mode — то вот вам лейбла, если Edit — распишитесь за Textbox...

Вобщем всем спасибо за помощь, особенно Николаю. :)
...
Рейтинг: 0 / 0
Получение элементов из DetailsView и Eval
    #33826463
Nikolay_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S>А что за событие DV?
DV — это DetailsView я так сократил... :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Получение элементов из DetailsView и Eval
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]