2013-07-05 5 views
0

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

<script type="text/javascript"> 
    var uploadCount = 1; 
    function addFileInput(fName) { 
     var only_file_name = fName.replace(/^.*[\\\/]/, ''); 
     var $div = $('<div />', {runat: 'server'}); 
     var $cbox = $('<input />', { type: 'checkbox', id: 'attachement' + uploadCount, value: fName, checked: "true", runat: 'server'}).addClass; 
     var $label = $('<label />', { 'for': 'attachement' + uploadCount, text: only_file_name }); 
     $div.append($cbox);    
     $div.append($label); 
     $('#newAttachment').append($div); 
     $("#uploadCountValue").prop("value", uploadCount); 
     uploadCount++;    
    } 
</script> 

новыйДоставка раздела DIV на странице.

<div id="newAttachement" runat="server" /> 

Раздел DIV расположен внутри секции. Проблема заключается в том, что пользователь нажимает кнопку в форме, которую я не могу найти динамически созданных компонентов. Следующий код показывает, как я пытаюсь найти компоненты:

for (int i = 1; i <= Convert.ToInt32(uploadCountValue.Value); i++) 
      { 
       if (RecursiveFind(newAttachement, "attachement" + i) != null) 
       { 
        ... to do something 
       } 
} 

public Control RecursiveFind(Control ParentCntl, string NameToSearch) 
{ 
    if (ParentCntl.ID == NameToSearch) 
     return ParentCntl; 

    foreach (Control ChildCntl in ParentCntl.Controls) 
      { 
       Control ResultCntl = RecursiveFind(ChildCntl, NameToSearch); 
       if (ResultCntl != null) 
        return ResultCntl; 
      } 
      return null; 
} 

я обнаружил, что элементы управления рассчитывать значение всегда равно нулю, несмотря на то динамические компоненты там. Я был бы рад получить любую помощь от нас. Благодарю.

ответ

0

Вы создаете динамические элементы управления в javascript? т. е. вы создаете html-элементы в javascript. Это не имеет значения, даже если вы добавили в него атрибут runat = "server", поскольку он все еще находится на стороне клиента. Это не будет частью пакета viewstate, поэтому он не будет заполнен коллекцией элементов управления.

вам нужно изменить свою логику. создайте динамический контроль в коде для обратной передачи по кнопке.

+0

создать динамический контроль в фоновом коде на обратной стороне кнопки. Не могли бы вы показать мне простой пример, пожалуйста? – chudnikau

+0

http://support.microsoft.com/kb/317515 – Abhitalks

+0

> вам нужно изменить свою логику. создайте динамический контроль в коде для обратной передачи по кнопке. Это должно быть похоже на gmail при прикреплении файлов к новой букве. Вероятно, gmail использует ajax при перезагрузке страницы. – chudnikau

1

найти элементы управления, созданное в клиентском конце концов, вы не можете найти их в коллекции Page.Controls вместо этого попытаться искать их в [] массиве Request.Form

Смежные вопросы