У меня есть генерируемый таблицу, используя следующий код (сниппет):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
таким образом, тогда я просто пойду и выясню их.
Ваш контроль ediTable просто не существует как таковой ... вы не добавляете элемент управления, вы размещаете контент в html-контенте. Лучший proff - вы сможете увидеть атрибут «runat» в своем HTML-источнике, в то время как вы не должны ... –