2009-11-06 2 views
1

List에서 GridView를 채우면 TemplateField 컨트롤을 사용하여 편집 할 수 밖에 없습니다. 이렇게하려면 편집 모드에서 원래 값으로 채워진 TextBox를 표시하고 FindControl을 사용하여 업데이트 제출시 새 값을 가져와야합니다.GridView에서 FindControl ("someTextBox")이 업데이트 된 값을 보내지 않음

문제 foundTextBox.Text는 "OriginalTextBoxValue"

<asp:TemplateField HeaderText="A Field"> 
        <ItemTemplate> 
         <asp:Label ID="_theLabel" runat="server" Text='<%# Eval("AField") %>' /> 
        </ItemTemplate> 
        <EditItemTemplate> 
         <asp:TextBox ID="_theTextBox" runat="server" Text='<%# Eval("AField") %>' /> 
        </EditItemTemplate> 
       </asp:TemplateField> 

그리고 당신은 잘못된 이벤트 핸들러의 코드 뒤에있어

TextBox newText = (TextBox)_myGridView.Rows[e.RowIndex].FindControl("_thTextBox"); 
//newText.Text == the old value of the text box 

답변

4

모든 다시 게시마다 gridview가 바인딩됩니까? 그리드 뷰가 텍스트 상자를 읽기 전에 다시 바인딩되기 때문에 업데이트 된 값을 얻지 못하는 이유를 설명 할 수 있습니다.

전체 업데이트 방법을 붙여 주실 수 있습니까?

+0

나는 비슷한 문제를 겪고있다. 그리고 나는 이것이 무슨 일이 일어나고있는 동안, 나는 그것을 고치는 방법을 정말로 모른다. – sylverfyre

0

내 업데이트 이벤트 처리기의 코드를 ==입니다. 편집 이벤트 핸들러로 이동하면 사용자가 행에 대한 편집 명령을 클릭 할 때마다 텍스트 상자가 채워집니다.

관련 문제