2013-07-26 1 views
0

를이다 UserControl이 내 텍스트 상자를 만든 각 제어는 각각의 UserControl에 내가 DataList에 상품 템플릿에 해당 사용자 제어를 사용한액세스 동적 DataList로 난 동적으로 생성되는 제어를 도시하는 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> 

사용자 콘트롤에서 나는 텍스트 박스에 txtName으로 id를 부여하고 datalist에서이 텍스트 박스를 동적으로 생성 한 후 id를 txt + "열 이름" 으로 바꾼다.

지금 나는 당신이 컨트롤에 액세스를 시도하는 방법을 잘 모르겠습니다 개체 참조 오류 또는 null

+0

ASP.Net 수명주기를 살펴보십시오. http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx –

답변

1

를 얻을 수 txtCaseCD 텍스트 상자에 액세스 할 때 속성 프롬프트의 도움으로 txtCaseCD하지만, 다음과 같은 접근 방식은 보장합니다 너 성공이야. 먼저 사용자 정의 컨트롤을 찾습니다. 그리고 나서 사용자 정의 컨트롤 내에서 필요한 텍스트 상자로 드릴 다운합니다.

protected void DataList_ItemDataBound(Object sender,DataListEventArgs e) 
    { 
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
{ 
    ucTextBox myTextControl=(ucTextBox)e.Item.FindControl("ucTextBox1"); 
    if (myTextControl!= null) 
     { 
    TextBox txtCaseCD=(TextBox)myTextControl.Find("txtCaseCD"); 

     //now you can use txtCaseCD without a null reference error 

     } 

} 
} 

설정에 따라 작동하는지 알려주세요.

+0

ur 답장을 보내 주셔서 감사합니다. 버튼 클릭에 datalist, 그래서 그 경우에는 dlCriteriaControl.Items Item.Note를 사용해야합니다 : 거기에 아무 수 있습니다. 생성 된 항목 (사용자 정의 컨트롤). – Anuj