2009-12-10 5 views
0

У меня есть элемент управления на странице (скажем, кнопки). Я хочу создать такой пользовательский элемент управления, который будет иметь свойство TargetControlID, которое принимает идентификатор элемента управления (кнопки) на странице, а на рендере заменит (спрячет) его на другую кнопку (клон первой кнопки). Является ли это возможным? Кто-нибудь когда-либо делал такие вещи?Пользовательский элемент управления, который заменяет какой-либо другой элемент управления на странице aspx

ответ

2

Это, безусловно, возможно, но я бы предложил альтернативный подход, который будет иметь меньше проблем.

Вместо замены целевого элемента управления просто скройте его, установив его видимость на значение false. Таким образом, любая обработка, которую он выполняет, будет по-прежнему работать, идентификаторы управления останутся статическими при рендеринге (автоматически созданный идентификатор управления зависит от порядка элементов управления), и он будет иметь тот же эффект, что и вы.

1

Да, вы можете делать то, о чем говорите. Создайте свой пользовательский контроль обычным способом. Вот ссылка в случае, если вы не знакомы с этим: Creating a User Control

Затем создайте свойство в коде-за так:

public string TargetControlID { get; set; } 

После того, как это свойство, вы можете получить доступ к нему через HTML :

<Azat:AzatButton ID="abtn1" runat="server" TargetControlID="btnOtherButton1" /> 

Тогда в обработчик события Page_Load(), инстанцировании кнопку, основанную на this.abtn1.TargetControlID и удалить abtn1 из коллекции Controls страницы.

this.Controls.Remove(this.abtn1);