2012-09-21 3 views
0

업데이트 링크 버튼을 클릭 할 때마다 gridSearchResults_RowUpdating 이벤트를 연결했습니다. 내가하고 싶은 일은 rowindex 이벤트에서 행을 반복하고 행 셀의 textbox 값을 문자열 컬렉션에 추가하는 것입니다. 난 세포에있는 텍스트 박스에 액세스하는 데 어려움을 겪고있다. 이 코드가 이해가되지 않는다면, 코드가 더 명확 해 지도록 도와야합니다.gridview.row에 대한 foreach 루프 [e.rowindex]

HTML

 <asp:TemplateField HeaderText="Title" SortExpression="Title"> 
       <ItemTemplate> 
        <asp:Label ID="lblTitle" runat="server" Text='<%# Eval("jobTitle") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("jobTitle") %>' ReadOnly="true" 
         BorderStyle="none" BorderWidth="0px" Width="80"> 
        </asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="First Name" SortExpression="FirstName"> 
       <ItemTemplate> 
        <asp:Label ID="lblFirstName" runat="server" Text='<%# Eval("FirstName") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtFirstName" runat="server" Text='<%# Bind("FirstName") %>' ReadOnly="true" 
         BorderStyle="none" BorderWidth="0px" Width="80"> 
        </asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="Last Name" SortExpression="LastName"> 
       <ItemTemplate> 
        <asp:Label ID="lblLastName" runat="server" Text='<%# Eval("LastName") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtLastName" runat="server" Text='<%# Bind("LastName") %>' ReadOnly="true" 
         BorderStyle="none" BorderWidth="0px" Width="80"> 
        </asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="Email Address" SortExpression="EmailAddress"> 
       <ItemTemplate> 
        <asp:Label ID="lblEmailAddress" runat="server" Text='<%# Eval("EmailAddress") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtEmailAddress" runat="server" Text='<%# Bind("EmailAddress") %>' ReadOnly="true" 
         BorderStyle="none" BorderWidth="0px" Width="80"> 
        </asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="Telephone Number" SortExpression="TelephoneNumber"> 
       <ItemTemplate> 
        <asp:Label ID="lblTelephoneNumber" runat="server" Text='<%# Eval("TelephoneNumber") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtTelephoneNumber" runat="server" Text='<%# Bind("TelephoneNumber") %>' ReadOnly="true" 
         BorderStyle="none" BorderWidth="0px" Width="80"> 
        </asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="Company" SortExpression="Company"> 
       <ItemTemplate> 
        <asp:Label ID="lblCompany" runat="server" Text='<%# Eval("Company") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtCompany" runat="server" Text='<%# Bind("Company") %>' ReadOnly="true" 
         BorderStyle="none" BorderWidth="0px" Width="80"> 
        </asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:LinkButton ID="lbEditLink" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton> 
       </ItemTemplate> 
       <EditItemTemplate> 
       <asp:LinkButton ID="lbCancelLink" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
       <asp:LinkButton ID="lbUpdateLink" runat="server" CausesValidation="False" CommandName="Update" Text="Update"></asp:LinkButton> 
       </EditItemTemplate> 

      </asp:TemplateField> 

     </Columns> 
    </asp:GridView> 

C#

protected void gridSearchResults_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
     GridViewRow row = gridSearchResults.Rows[e.RowIndex]; 

     foreach (gridviewrow c in gridSearchResults.Rows[e.RowIndex]) 
     { 

     } 
} 

그래서 사람은있는 gridview 행의 세포를 통해 반복하고있는 텍스트 상자에 값을 잡는 좋은 방법을 알고 않습니다 gridview 행 셀. 감사합니다

+0

'gridSearchResults.Rows [e.RowIndex] .Cells' 또는'gridSearchResults.Colums'을. 그러나 TemplateField에서 컨트롤을 얻으려면'row.FindControl ("controlID")'를 사용하십시오. –

+0

당신이 얻는 것은 하나의 행이기 때문에, 인덱스를 알고 있거나 더 나은 셀이라면 셀을 반복하거나 정확한 셀로 이동해야합니다. gridSearchResults.Rows [e.RowIndex] .FindControl – V4Vendetta

+0

각 FindControl을 명시 적으로 하드 코딩하지 않으려합니다. 가능한 경우 "txtControlName"). –

답변

1

이 시도 :

foreach (TableCell cell in gv.Rows(e.RowIndex).Cells) 
{ 
    TextBox txt1 = (TextBox)cell.FindControl("txtControlName"); 
    // or if you don't want to hard code the control name and assuming that there is only 1 control in the cell then use this: 
    TextBox txt2 = (TextBox)cell.Controls(0); 
}