Я использую DataList для показа динамически создаваемых элементов управления, каждый элемент управления находится в соответствующем UserControl и я использовал этот пользовательский элемент управления в в шаблоне DataList пунктдоступа динамически созданные TextBox в UserControl, который находится в DataList
<asp:DataList ID="dlCriteriaControl" runat="server" RepeatColumns="2" OnItemDataBound="dlCriteriaControl_ItemDataBound">
<ItemTemplate>
<%--<uc3:ucDatepicker ID="ucDatepicker1" runat="server" />
<uc2:ucRadComboBox ID="ucRadComboBox1" runat="server" />--%>
<uc1:ucTextBox ID="ucTextBox1" runat="server" Text='<%# Bind("Column_Name") %>' Prompt='<%# Bind("Column_Prompt") %>' />
<uc3:ucDatepicker ID="ucDatePicker1" runat="server" Text='<%# Bind("Column_Name") %>'
Prompt='<%# Bind("Column_Prompt") %>' />
<asp:HiddenField ID="hdnStatus" runat="server" Value='<%# Bind("Control_Display") %>' />
</ItemTemplate>
</asp:DataList>
В usercontrol я указал id в текстовое поле как txtName, и после динамического генерации этого текстового поля в datalist идентификатор меняет на txt + "имя столбца" например. txtCaseCD с помощью свойств запроса
теперь, когда я хочу, чтобы получить доступ к текстовому полю txtCaseCD я получаю ссылку на объект ошибку или нулевой
Посмотрите на жизненный цикл ASP.Net: http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx –