alexander.rodrigues Ответов: 0

Доступ к текстовому полю, созданному в itemdatabound командой itemcommand ретранслятора


Я динамически создал несколько HtmlTableCell и несколько текстовых полей внутри ItemDataBound моего ретранслятора. Я назвал внутри ForEach с помощью txt1, txt2 и т. д. Когда я нажимаю кнопку edit, мне нужно получить доступ к ним через ItemCommand, чтобы поставить Enable=true, но я не могу, потому что по какой-то причине мой ретранслятор просто позволяет мне получить доступ к элементам управления, которые я вставил на страницу aspx. Я все перепробовал, но не могу получить доступ к текстовому полю ... Если кто-нибудь сможет мне помочь, я буду очень благодарен. Как вы можете видеть в приведенном ниже примере, я вставил текстовое поле внутри объекта HtmlTableCell, потому что столбцы тоже являются динамическими ...

Что я уже пробовал:

/* my Repeater ItemDataBound */
int i = 1;
for(int i = 1; i <= 24; ++i)
{
   double qtd = com.STRTODOUBLE(HI.ToString());
   
   TextBox txtQTD = new TextBox()
   {
      ClientIDMode = ClientIDMode.Static,
      ID = e.Item.ItemIndex.ToString() + "_" + i.ToString(),
      CssClass = "form-control text-center h5 small",
      MaxLength = 12,
      Text = qtd.ToString("n1"),
      Enabled = false
   };

   HtmlTableCell htc = new HtmlTableCell();
   htc.Attributes.Add("class", "text-right");
   htc.Controls.Add(txtQTD);
   tr.Controls.Add(htc);
   ++i;
}

/* my Repeater ItemCommand */
...
if (e.CommandName.ToString() == "HSG")
{
   for (int i = 1; i <= 24; ++i)
   {
      /* I can access any control that was added in the aspx page, but the dynamic control below always returns null value */ 
      TextBox txtQTD = (TextBox)e.Item.FindControl(e.Item.ItemIndex.ToString() + "_" + i.ToString());
      txtQTD.Enabled = true;
      ++i;
   }
}

0 Ответов