2013-10-27 35 views
2

我在gridview中有文本框和按鈕。我想要的是,當我點擊這些按鈕時,文本框中的相應值更新爲數據庫,因此我需要訪問OnClick事件中的文本框文本。我怎樣才能做到這一點?如何從gridview訪問文本框文本到按鈕Onclick事件

的GridView:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
      BackColor="#CCCCCC" BorderColor="#999999" 
      BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" 
      ForeColor="Black" OnRowDataBound="GridView1_RowDataBound" 
      onselectedindexchanged="GridView1_SelectedIndexChanged"> 
      <Columns> 
       <asp:TemplateField HeaderText="Save 1"> 
        <ItemTemplate> 
         <asp:TextBox ID="TextBox1" Width="30px" runat="server"></asp:TextBox> 
         <asp:Button ID="btnSave1" runat="server" Text="Save" OnClick="btnSave1_Click" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Save 2"> 
        <ItemTemplate> 
         <asp:TextBox ID="TextBox2" Width="30px" runat="server"></asp:TextBox> 
         <asp:Button ID="btnSave2" runat="server" Text="Save" OnClick="btnSave2_Click" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
</asp:GridView> 

按鈕onclick事件:

protected void btnSave1_Click(object sender, EventArgs e) 
    { 
     //I want to access TextBox1 here. 
    } 

請大家幫我出這一點。

+0

請看看這個網站,他們有非常相似的一個樣本你試圖達到什麼目的。 http://www.aspsnippets.com/Article/Simple-Insert-Select-Edit-Update-and-Delete-in-ASPNet-GridView-control.aspx –

回答

4

你可以這樣做:

protected void btnSave1_Click(object sender, EventArgs e) 
{ 
    GridViewRow row = (GridViewRow)((Button)sender).NamingContainer; 
    TextBox TextBox1 = row.FindControl("TextBox1") as TextBox; 

     //Access TextBox1 here. 
     string myString = TextBox1.Text; 
} 
+0

儘管它正在工作,但文本框值將爲空。爲什麼? –

+0

工作!謝謝。 –

0

Basicly這是如何獲得文本框的值的例子:

string CustomerID = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtCustomerID")).Text; 
+0

但是由於我的按鈕點擊事件在gridview之外,所以'e.RowIndex '不起作用。單擊事件觸發器更新命令上的 –

+0

。我提供的網站會給你詳細的信息。它非常接近你想要的 –

+0

在這個網站的例子中,他們使用'FooterTemplate',你能告訴我應該在哪裏使用它嗎? –

相關問題