2017-05-04 54 views
0

我有一個gridview,gridview裏面是一個templatefield上的文本框,當我更改它的值時,如何獲取點擊文本框的行索引?如何引用當我點擊gridview中的文本框選擇哪一行?

<asp:GridView ID="productView" runat="server" BorderWidth="3px" CellPadding="4" CellSpacing="2" AutoGenerateColumns="False" Width="1000px" OnSelectedIndexChanged="productView_SelectedIndexChanged"> 
     <Columns> 
      <asp:TemplateField HeaderText="Sacks"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtSacks" runat="server" CssClass="form-control" Text ="0" Width="100px" OnTextChanged="txtSacks_TextChanged" AutoPostBack="true"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

aspx.cs:

protected void txtSacks_TextChanged(object sender, EventArgs e) 
{ 
    //Rowindex of the texbox 
} 

回答

1

得到它使用RowIndex

GridViewRow gvRow = (GridViewRow)(sender as Control).Parent.Parent; 

int index = gvRow.RowIndex; 
2

您可以通過的TextBoxNamingContainer property得到GridViewRow

protected void txtSacks_TextChanged(object sender, EventArgs e) 
{ 
    TextBox txt = (TextBox) sender; 
    GridViewRow row = (GridViewRow) txt.NamingContainer; 
    int rowIndex = row.RowIndex; 
} 

這比使用txt.Parent.Parent更好,因爲即使嵌套控件它仍能工作(f.e.如果您想將文本框添加到TablePanel)。

相關問題