Динамически добавленный элемент управления не выполняет обратную передачу

Я заменяю сетку, добавляя некоторые особенности клиента. Одна из функций - раскрывающееся меню для настройки размера страницы. Я расширяю сетку с помощью клиентского серверного элемента управления, который отлично подходит для того, что я делал до сих пор. Однако теперь у меня возникают проблемы с получением динамически добавляемого элемента управления для выполнения обратной передачи. JavaScript для инициации обратной передачи отсутствует.

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
    Dim pageSizePanel As New Panel
    ...
    Dim countList As List(Of String) = GetCountList()
    Dim pageSizeDropdown As New DropDownList()
    pageSizeDropdown.ID = "pageSizeDropdown"
    pageSizeDropdown.DataSource = countList
    pageSizeDropdown.DataBind()

    AddHandler pageSizeDropdown.SelectedIndexChanged, _
               AddressOf HandlePageSizeChange

    pageSizePanel.Controls.Add(pageSizeDropdown)
    ...
    MyBase.Controls.AddAt(0, pageSizePanel)
    MyBase.OnPreRender(e)
End Sub

HTML - это

<select name = "tab$grid1Tab$RadGrid1$pageSizeDropdown" 
    id = "tab_grid1Tab_RadGrid1_pageSizeDropdown">
        <option selected = "selected" value = "10">10</option>
        <option value = "20">20</option>
        <option value = "40">40</option>
        <option value = "80">80</option>
        <option value = "All">All</option>

    </select>

Итак, связано ли это с тем, что я «вбиваю» элементы управления? Связано ли это с динамическим добавлением элементов управления?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
570
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам необходимо установить для "AutoPostBack" значение true, чтобы выпадающий список использовался для обратной передачи. В противном случае другой элемент управления должен будет отправить форму обратно (однако событие SelectedIndexChanged сработает, когда это произойдет).

Ответ принят как подходящий

Первое, что я заметил, это то, что вам не хватает этого:

pageSizeDropdown.AutoPostBack = true

но я не уверен, что это все, что вам нужно для работы

Вы правы в том, что это еще не все. Некоторые вещи ViewState вышли из строя.

Greg Ogle 17.11.2008 22:09

вторая часть проблемы может быть связана с тем, что после того, как обратная передача попадает на сервер, он может не обязательно знать, что с ним делать, если этот элемент управления не существует, когда страница перестраивается (т.е. этот код, который строит вашу сетку данных, не пробегал еще). Я бы попробовал построить сетку в событии инициализации страницы

John 17.11.2008 22:18

Я думаю, что необходимо создать элемент управления pageSizeDropdown и подключить событие ранее в жизненном цикле страницы, см. http://msdn.microsoft.com/en-us/library/ms178472.aspx. Динамически добавляемый элемент управления должен быть создан до события LoadComplete страниц, чтобы его событие элемента управления могло запускаться.

Другие вопросы по теме