2013-05-14 2 views
1

У меня есть генерируемый таблицу, используя следующий код (сниппет):FindControl всегда возвращает нуль динамически сгенерированной таблицы

String sTable = "<table id=\"ediTable\" runat=\"server\">\n" + 
     "...\n" + 
     "</table>\n"; 
table_display.InnerHtml = sTable; 
table_win.Style.Add("display", "block");//show table 

я тогда, в конце моего кода, попробуйте найти эту таблицу, используя метод FindControl() найти эта таблица выглядит следующим образом:

protected void SubmitTable(object sender, EventArgs e) 
{  
    Control ctrl = table_display.FindControl("ediTable"); 
} 

Вот мое отношение HTML:

... 
<div id="table_display" runat="server"> 
</div> 
<asp:Button ID="submitReport" CssClass="submit_btn" runat="server" Text="Submit" OnClick="SubmitTable" /> 
... 

ctrl всегда имеет значение null, когда я просматриваю свой код, несмотря на то, что table_display все еще содержит таблицу html. Я знаю, что я мог бы использовать DataList, DataView или Repeater, чтобы сгенерировать таблицу вместо этого, но я не знаю, как их использовать, и предпочел бы вместо этого работать. Если это невозможно, используйте FindControl таким образом, тогда я просто пойду и выясню их.

+1

Ваш контроль ediTable просто не существует как таковой ... вы не добавляете элемент управления, вы размещаете контент в html-контенте. Лучший proff - вы сможете увидеть атрибут «runat» в своем HTML-источнике, в то время как вы не должны ... –

ответ

1

Невозможно использовать FindControl. InnerHtml не будет анализироваться, преобразован в экземпляры веб-управления и добавлен в дерево управления, поэтому ваша таблица никогда не будет найдена.

+0

Спасибо. Я подозревал столько же. Я отмечу это как ответ через 9 минут. – gaynorvader

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