2013-04-22 5 views
0

В ASPxPageControl я добавил динамические создания ярлыков и текстовых полей. Первоначально свойство Text текстового поля пуст, пока конечный пользователь не заполнит текстовое поле в соответствии с необходимой информацией.Получение текстового свойства динамического созданного ASPxTextBox с отражением C#

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

Am Я что-то пропустил в своем коде?

Вот мой код:

PropertyInfo cntrlProperty; 
    foreach (System.Web.UI.Control cntrl in pControl.TabPages[1].Controls) 
    { 
      Type ControlType = testAssembly.GetType(typeof(ASPxTextBox)); 

      if (!cntrl.GetType().Equals(typeof(ASPxLabel)) && cntrl.GetType().Equals(ControlType)) 
      { 


      cntrlProperty = cntrl.GetType().GetProperty("Text"); 

      var value = cntrlProperty.GetValue(cntrl); 

       VALUES += String.Format("'{0}'" + ",", value); 
      } 


    } 

Кроме того, я попытался установить строку по умолчанию при создании своих элементов управления динамически и это ковшики хорошо, потому что строка это по умолчанию в текстовом поле, когда элементы управления визуализируются.

предположим, что строка по умолчанию = «просто строка»;

До этого момента в моем коде выше значения переменной = просто строка и это нормально.

Тогда что я сделал, чтобы добавить (я напечатал «в текстовом поле») текст в «строку по умолчанию» во время выполнения NOW строка по умолчанию выглядит как

строки по умолчанию = «просто строка в текстовое поле»

, а затем я нажал кнопку Сохранить и получается, что переменная значение он по-прежнему сохраняет значение = только строку

Любая идея, почему это происходит?

+0

где вы помещаете в текстовое поле значение «просто строка»? –

+0

в page_load страницы, но этот код только тогда, когда я динамически создаю элементы управления (я думаю, вам это не нужно), и в то же время y просто устанавливает свойство Text как «просто строку». –

ответ

0

ОК, я не думаю, что вам нужно отражение вообще. Вы уже знаете тип, на который вы нацеливаетесь. Вы обычно используете отражение, когда вы не знаете тип, или вы можете иметь дело с несколькими типами и пытаться поместить их в шаблон.

Рассмотрим это:

foreach (System.Web.UI.Control cntrl in pControl.TabPages[1].Controls) 
    { 
     if (cntrl is ASPxTextBox) 
     { 
      VALUES += string.Format("'{0}' + ",", (cntrl as ASPxTextBox).Text); 
     } 
    }

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

Также необходимо знать, что для этого LoadPostData будет успешным при добавлении элементов управления с использованием ASP.NET AJAX, так это то, что вам нужно загрузить этот элемент управления на странице для каждого возврата после создания их, чтобы иметь возможность вернуть значения.

Надеюсь, это поможет.

+0

Я пробовал свой код, и я все еще не могу вернуть текстовое значение.Я думаю, что проблема может заключаться в том, что вы упомянули (LoadPostData) или что-то с жизненным циклом страницы (я ее прочитал). Мне бы хотелось, чтобы вы предоставили мне полезные ссылки на LoadPostData, я искал, и я не нашел ничего полезного. Считаете ли вы, что эта проблема может быть вызвана функцией ** RegisterRequiresPostBack() **? Я читал это, но я все еще не могу получить его. –

+0

Думаю, мне нужно использовать Callbacks вместо PostBacks, как вы думаете, @Arturo Martinez? –

+0

Во-первых, вы разработали пользовательский контроль? или это контроль третьей стороны. Если это сторонний элемент управления, попробуйте найти на своих форумах возможное решение, потому что внутреннему компоненту управления необходимо обработать метод LoadPostData. –

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

  • Нет связанных вопросов^_^