Я создаю элемент управления таблицей на лету, который содержит серию меток и раскрывающихся списков для каждой строки таблицы, которая также включает в себя некоторый JavaScript-код на ярлыках и раскрывающихся списках.
Dim dd As New DropDownList
Dim ds As System.Data.DataTable = GetTable("EmployeePosition")
Dim prefix As String = "Position"
dd.ID = prefix & i
dd.DataSource = ds
dd.DataValueField = "PositionID"
dd.DataTextField = "PositionName"
dd.Attributes.Add("onchange", "checkDuplication(this,'" & prefix & "');")
dd.DataBind()
Функция javascript 'onchange' проходит через все раскрывающиеся элементы управления, начиная с префикса, и проверяет, совпадает ли значение любого из раскрывающихся списков.
Эта таблица затем добавляется в элемент управления PlaceHolder, который, в свою очередь, содержится в элементе управления ContentPlaceHolder, который находится на моей главной странице.
Master_Content1_Position1
Проблема, с которой я повторно обращаюсь, заключается в автоматическом присвоении именэлементов управления, когда они размещаются на главных страницах и в ContentPlaceHolders, особенно когда речь идет о javascript.
Лучшее решение, которое я до сих пор придумал, - это найти ContentPlaceHolder, который будет содержать PlaceHolder, извлечь ClientID и передать это значениена стол создателя.
Dim cph As ContentPlaceHolder = Me.Master.FindControl("Content1")
Dim tbl As Table = New PositionTable(cph.ClientID).ToTable
PlaceHolder1.Controls.Add(tbl)
Есть ли способ определить, в каком текущем ContentPlaceHolder находится элемент управления или PlaceHolder, и вернуть ClientID или UniqueID, чтобы я мог передать это значение моему создателю таблицы, чтобы префиксировать функции javascript для указанияна правильные элементы управления, используя идентификатор элемента?Предпочтительно использовать PlaceHolder или Control, который будет заполняться как базовое значение?
Спасибо.