本帖最后由 fennyli78 于 2011-12-11 22:25:53 编辑

解决方案 »

  1.   

    foreach (GridViewRow gvr in gvInBillList.Rows)
           {
              TextBox t = gvr.FindControl("TextBox1") as TextBox;
              if (t != null)
              {
                  t.Text = "给TextBox1赋值";
              }
           }
      

  2.   

    用循环,这是两种情况,两个例子,你可以仿照着改
     for (int i = 0; i < gridView1.Rows.Count; i++)
            {
                string strC = ((TextBox)gridView1.Rows[i].Cells[4].FindControl("txtCount")).Text;            pid = ((HiddenField)gridView1.Rows[i].FindControl("hiddenFiled1")).Value;
            }
      

  3.   

    后端代码1:
      protected void linkbtnSales_Click(object sender, EventArgs e)
      {
      string txt = ((TextBox)GvData.Rows[e.RowIndex].FindControl("TextBox1")).Text;
      }
    这样写提示system.EventArgs不包含RowIndex的定义------------------------------
    string txt = ((TextBox)GvData.Rows[e.RowIndex].FindControl("TextBox1")).Text;
    =>
    TextBox textBox = sender.NamingContainer.FindControl("TextBox1") as TextBox;
    if(textBox!=null)
    {
       string txt = textBox.Text;
    }
      

  4.   


    这样循环不行啊,假设gridview有5行记录,在第一行输入了数字10,第三行输入数字5,点击第一行的选取,最后得到的数会是第三行的数字5。我需要点哪行就只取哪行的数。
      

  5.   


    “object”不包含“NamingContainer”的定义,并且找不到可接受类型为“object”的第一个参数的扩展方法“NamingContainer”(是否缺少 using 指令或程序集引用?) 出这个错,找不到应该引用什么啊
    我的引用如下:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Text;
    using System.Xml;
    using System.Web.Services;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using Microsoft.ApplicationBlocks.Data;
    using System.Text.RegularExpressions;
      

  6.   

    改成这样能编译,但是得到的值是空啊        TextBox textBox = (sender as LinkButton).NamingContainer.FindControl("TextBox1") as TextBox;
            if (textBox != null)
            {
                string txt = textBox.Text;
            }
                   
      

  7.   

    TextBox textBox = (sender as LinkButton).NamingContainer.FindControl("TextBox1") as TextBox;
    if (textBox != null)
      {
      string txt = textBox.Text;
      }在if 那句点个断点看下  
      

  8.   

    下了,执行if里面的语句里,只不过textbox。text是""          for (int i = 0; i < GvData.Rows.Count; i++)
              {
                  string txtName = "GvData$ctl" + (i + 2).ToString().PadLeft(2, '0') + "$TextBox1";
                  if (Request.Form[txtName] != null && Request.Form[txtName] !="")
                  {
                      string thisreturnqty = Request.Form[txtName].ToString();
                  }
              }这样倒是能取出值来,问题就是不能点哪行的选取取得哪行的数字。
    假设gridview有5行记录,在第一行输入了数字10,第三行输入数字5,点击第一行的选取,最后得到的数会是第三行的数字5。我需要点哪行就只取哪行的数。
      

  9.   

    如果if 执行了,而文本为空  那可能是你的代码 绑定部分没有写在IsPostBack 里,重复绑定导致值没了。
      

  10.   

    我的意思是你的 GridView 的绑定的代码没有写在 IsPostBack 里还一个办法能让你获取到值TextBox textBox = (sender as LinkButton).NamingContainer.FindControl("TextBox1") as TextBox;
    if (textBox != null)
      {
      string txt = Request.Form[textBox.UniqueID];
      }