2009-09-28 2 views
3

tr/td 안에 여러 텍스트 상자가있는 formview가 있습니다. .FindControl 메서드를 사용하여 텍스트 상자를 얻으려고하는데 null이 다시 나타납니다. FormView는 항상 편집 모드 (항상 EditItemTemplate에 있음)에 있으며 이전 페이지에서 오는 텍스트 상자에 쿼리 문자열 값을로드하려고하므로 page_load에서 발생해야합니다. 나는있는 GridViews에이 같은 모든 시간을이 작업을 수행 : FormView.FindControl() : 개체 참조 오류

txtFirstName = (TextBox)fvGeneralInfo.FindControl("txtFirstName"); 

또는 같은

: 무엇 제공

txtFirstName = (TextBox)fvGeneralInfo.Rows.FindControl("txtFirstName"); 

:

txtFirstName = (TextBox)fvGeneralInfo.FooterRow.FindControl("txtFirstName"); 

또는 같은

?

<asp:FormView ID="fvGeneralInfo" runat="server" 
    DataSourceID="objInstructorDetails" 
    OnItemCommand="fvGeneralInfo_ItemCommand" 
    OnItemUpdated="fvGeneralInfo_ItemUpdated" 
    DefaultMode="Edit" 
    DataKeyNames="InstructorID" > 
    <EditItemTemplate> 
     <table> 
      <tr> 
       <td colspan="2" class="Admin-SubHeading" style="padding-left:10px;">General Info:</td> 
      </tr> 
      <tr> 
       <td class="Admin-FieldLabel">ID:</td> 
       <td><asp:TextBox ID="txtInstructorId" runat="server" CssClass="Admin-Textbox" ReadOnly="true" Text='<%# Bind("InstructorID") %>' /></td> 
      </tr> 
      <tr> 
       <td class="Admin-FieldLabel">First Name:</td> 
       <td><asp:Textbox ID="txtFirstName" runat="server" CssClass="Admin-Textbox" Text='<%# Bind("FirstName") %>' /></td> 
      </tr> 
      </table> 
     </EditItemTemplate> 
    </asp:FormView> 
+0

당신은 올바른으로 답변 중 하나를 찾을 수 없습니까? – abatishchev

답변

2

먼저 DataBind();으로 전화하십시오. 그렇다면

2

abatishchev 님의 답변이 맞습니다.이 변형은 약간 깔끔한 것으로 나타났습니다. DataBind()를 명시 적으로 호출하지 않아도됩니다.

<asp:FormView ID="fvMember" runat="server" DataSourceID="tblMembers" DefaultMode="Insert" OnDataBound="DataBound">...</asp:FormView> 

protected void DataBound(object sender, EventArgs e) 
{ 
    if (fvMember.CurrentMode == FormViewMode.Edit) 
    { 
     Label lblSubmit = fvMember.FindControl("lblSubmit") as Label; 
     ... 
    } 
}