Я уверен, что этот вопрос задан в миллион раз, однако мне не удалось найти ответ, который решает мою проблему.Динамические пользовательские элементы управления ASP.NET
Я программно добавляю некоторые пользовательские элементы управления к PlaceHolder, которые у меня есть на простой странице aspx. Все пользовательские элементы управления корректно работают, за исключением тех, которые имеют Gridview.
По какой-либо причине любой ответ, который запускается из этого элемента управления, не вызывает указанное событие при первом щелчке, однако все будущие клики будут работать нормально. Я понятия не имею, почему это так, но многие решения, которые я нашел, предлагают добавить идентификатор к пользовательскому элементу ascx, но это не работает в моем случае.
Я принял взглянуть на исходный файл страницы, который получает генерируемой до и после первого щелчка, JavaScript используется для вызова изменения обратной передачи, т.е.
Перед первым щелчком мыши: OnClick = "JavaScript: __ doPostBack ('tmpControlID $ sgvPrimaryEmploymentHistory', 'Выберите $ 0')»
После первого щелчка: OnClick = "JavaScript: __ doPostBack ('OFFHome1 $ tmpControlID $ sgvPrimaryEmploymentHistory', 'Выберите $ 0')"
OFFHome1 является родителем пользовательский элемент управления, который существует на странице aspx. Все остальные элементы управления добавляются в заполнитель в этом контроле, то есть
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="OFFHome.ascx.vb" Inherits="UmbracoUserControls.OFFHome" %>
<asp:PlaceHolder ID="phOFFSection" runat="server"></asp:PlaceHolder>
Ничего сложного. Затем в коде, находящемся за элементами управления, загружаются в заполнитель, используя следующее:
Опять же, ничего сверх сложного. USERCONTROLNAME - это просто константа со значением «tmpControlID».
Элемент управления, который дает мне проблемы, немного сложнее, изначально я использовал настраиваемый элемент управления GridView, который мы создали, но удалил его и заменил его стандартным asp, чтобы увидеть, все еще проблема, и оно делает.
Любая кнопка, на панели управления, которая срабатывает после обратной передачи, не будет работать в первый раз, и все будущие щелчки будут работать правильно. При первом нажатии будет вызываться событие Page_Load, но это все.
Что я делаю неправильно?
На какой части жизненного цикла страницы вы вызываете 'LoadNextOFFStep()'? –
Он вызывается в Page_Load элемента управления OFFHome.ascx. т.е. Protected Sub Page_Load (ByVal отправитель As Object, ByVal е Как System.EventArgs) Ручки Me.Load Если не IsPostBack Тогда LoadNextOFFStep() Else LoadCurrentOFFStep (False) End If End Sub В LoadCurrentOFFStep выполняет аналогичная задача, однако она используется только для повторного добавления элемента управления после обратной передачи. – 2010-01-19 04:24:06
@Chirs: Я удалил свой ответ, если вы задаетесь вопросом, куда он пошел. Я не думаю, что это сработает. –