如题,很简单,本来是想让gridview自动生成了一个buttonfild-确定按钮,点按钮取出gridview的数据。可是,现在我每次点按钮,提取出来的gridview.columns.count总是为0,里面的数据是空。谁能帮着看看,谢谢了!!public partial class insert2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sql = "select * from wbin.azs12 where id=10";
        Database myDb = new Database();
        DataSet myDs = myDb.GetDataSet(sql);
        myGv2.DataKeyNames = new string[] { "id" };
        myGv2.DataSource = myDs;
        myGv2.DataBind();
        this.Form.Controls.Add(myGv2);
    }
    protected void btnClick(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "save_btn")  //如果是OpenRow按纽
        {
            //this.Label1.Text=this.form1.Controls.Count.ToString();
            this.Label1.Text = myGv2.Columns.Count.ToString();
        }
        if (e.CommandName == "cancel_btn")
        { this.Label1.Text = "cancel 成功"; }
    }asp的代码
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="onemore" runat="server" OnClick="onemore_Click" Text="多一行" />
        <asp:Button ID="save" runat="server" OnClick="save_Click" Text="保存" />
        <asp:GridView ID="myGv2" runat="server" DataKeyNames="id" OnRowCommand="btnClick"  >
            <Columns>
                <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                        <asp:Button ID="Button1" runat="server" CausesValidation="false" CommandName="save_btn"
                            Text="保存" OnClientClick="javascript:return confirm('真的要删除吗?');" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:ButtonField ButtonType="Button" CommandName="cancel_btn" Text="返回" />
            </Columns>
       
       
        </asp:GridView>
        <br />
        &nbsp; <asp:Label ID="Label1" runat="server"> </asp:Label> </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    //GridView1模板列的Button按钮单击时取该行某列的值
         GridViewRow gvr = (sender as Button).NamingContainer as GridViewRow;
         if (gvr != null)
         {
              Response.Write(gvr.Cells[2].Text);//输出第三列的值
          }
      

  2.   

     protected void Button1_Click(object sender, EventArgs e)
    {
       //GridView1模板列的Button按钮单击时取该行某列的值 ,Button1是GridView1中的模板列的按钮
        GridViewRow gvr = (sender as Button).NamingContainer as GridViewRow; 
        if (gvr != null) 
        { 
             //Response.Write(gvr.Cells[2].Text);//输出第三列的值 
               Label1.Text = gvr.Cells[2].Text;//输出第三列的值 
          }
    }
      

  3.   

    楼上的,你的方法好像不好用。我试过了,取出来的gridview.row[0].cells[0].text还是空的,列数也不对根本不行!!!!!!!!!
      

  4.   

      <asp:GridView ID="gvInfo" CssClass="gvinfo" runat="server" AutoGenerateColumns="False" OnRowCommand="gvInfo_RowCommand">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="Button1" CommandArgument='<%#Eval("绑定的字段") %>'  runat="server" Text="Button" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
      

  5.   

    //取值的时候找到个BUTTON 
                Button but = gvInfo.FindControl("控件ID");
                string value = but.CommandArgument;
      

  6.   

        protected void btnClick(object sender, GridViewCommandEventArgs e) 
        { 
           Button btn = sender as Button;
           this.Label1.Text = btn.Count.ToString(); 
        } 
      

  7.   

    楼上的,还是出错啊,出错信息如下
    “System.Web.UI.WebControls.Button”并不包含“Count”的定义
      

  8.   

    控件对象 = gridview.row[0].cells[0].FindControl("控件ID") AS 控件对象
    控件对象。ext
      

  9.   

    你这句gridview.row[0].cells[0].text是什么?这样肯定不能取到的。
    我正在使用中,这样一定可以取到第三列的值:
    protected void Button1_Click(object sender, EventArgs e) 

      //GridView1模板列的Button按钮单击时取该行某列的值 ,Button1是GridView1中的模板列的按钮 
        GridViewRow gvr = (sender as Button).NamingContainer as GridViewRow; 
        if (gvr != null) 
        { 
              Label1.Text = gvr.Cells[2].Text;//输出第三列的值 
          } 
    }