请问一下,gridview有一模板列,模板列里有两个控件,分别是textbox和button.当点击button,怎么获取该行对应的textbox填入的值?

解决方案 »

  1.   

    (textbox)findecontrolls["id "].text
      

  2.   


    在rowcreating 时 给  button 命名个cmdname 
      

  3.   

    设置BUTTON的commandName属性为select
    点击BUTTON时就触发了selectIndexChanging事件,
    在事件中写
    textbox txt=(.....此行(textbox)findControl["id "]).text;OK
      

  4.   

    1.设置模板列里有两个控件分别为:TextBox1,Button1,且在第一列,
    在GridView1的RowDataBound事件中输入如下代码:
    if(e.Row.RowType==DataControlRowType.DataRow)
     ((Button)e.Row.Cells[0].FindControl("Button1")).CommandArgument = e.Row.RowIndex.ToString();2.在模板列的Button1的Click事件中输入如下代码:
    Button myB = (Button)sender;
    TextBox myT = (TextBox)GridView1.Rows[Convert.ToInt32(myB.CommandArgument)].FindControl("TextBox1");
    Response.Write(myT.Text);一切OK!
      

  5.   


    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
        { 
            if (e.Row.RowType == DataControlRowType.DataRow) 
            { 
                 TextBox txt = e.Row.FindControl("TextBox1") as TextBox;
                 Button button = e.Row.FindControl("Button1") as Button;
                 button.Attributes.Add("onclick","window.alert('"+txt.Text+"')");
            } 
        }
      

  6.   

    谢谢大家的回答,5楼的可以实现,6楼的不行,经调试,RowDataBound事件是在绑定数据源的时候就激发了,而这时textbox里的值自己为空。同时,我也找到另一种解决的办法,代码如下:protected void Button1_Click(object sender, EventArgs e)
    {
          Button btn = (Button)sender;
          TableCell cell = btn.Parent as TableCell;
          TextBox txt = cell.FindControl("TextBox1") as TextBox;
          Response.Write(txt.Text);
    }
      

  7.   


    这个做法也可以。具体做法如下:            <asp:TemplateField HeaderText="Type">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                        <asp:Button ID="Button2" runat="server" Text="Query" CommandName="Select" />
                    </ItemTemplate>
                </asp:TemplateField>
            protected void GridView2_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
            {
                TextBox txt = (TextBox)this.GridView2.Rows[e.NewSelectedIndex].FindControl("TextBox4");
                Response.Write(txt.Text);
            }