protected void Button1_Click(object sender, EventArgs e)
    {  
       
            if (Session["MessId"] != null)
            {
                string MessId = Session["MessId"].ToString();   
                 GridViewRow row = null;
                foreach (GridViewRow iRow in this.GridView1.Rows)
                    if (iRow.Cells[0].Text == MessId)
                        row = iRow;
                if (row != null)
                {
                    Panel panel = (Panel)this.GridView1.SelectedRow.FindControl("Panel1");
                    TextBox text = (TextBox)panel.FindControl("TextBox1");
                    Session["ReplyMess"] = text.Text.ToString();
                }
法2:
  if (this.GridView1.SelectedRow.RowType == DataControlRowType.DataRow)
                {
                 Panel panel = (Panel)this.GridView1.SelectedRow.FindControl("Panel1");
                    TextBox text = (TextBox)panel.FindControl("TextBox1");
                     Session["ReplyMess"] = text.Text.ToString();
                                    }
textbox都取不到值啊,困惑我两天了,谢谢大家.

解决方案 »

  1.   

    protected void Button1_Click(object sender, EventArgs e)
        {  
           
                if (Session["MessId"] != null)
                {
                    string MessId = Session["MessId"].ToString();   
                     GridViewRow row = null;
                    foreach (GridViewRow iRow in this.GridView1.Rows)
                        if (iRow.Cells[0].Text == MessId)
                            row = iRow;
                    if (row != null)
                    {
                        Panel panel = (Panel)row.FindControl("Panel1");//改一下这里
                        TextBox text = (TextBox)panel.FindControl("TextBox1");
                        Session["ReplyMess"] = text.Text.ToString();
                    }
      

  2.   

    我的button也是在模板的panel中的,给你出个难题,你试试吧!
      

  3.   

    gridview没用过,不过思路应该是一样的gridview.row.cell[].findcontrol(id)在行中是找不到的,要在列中找
      

  4.   

    看完lz贴出的代码,感觉到lz可能写asp.net不久,要是仍然不能实现,你倒不如直接把数据表结构和功能需求说一下,我可以给你写一个范例
      

  5.   

    经过调试,确认是下面的问题了:
    protected void Page_Load(object sender, EventArgs e)
        {
           if(!IsPostBack) BindDate();
        }由于每次postback时,都会先执行Page_Load,也就重新绑定GridView,里面的TextBox肯定就找不到了~
      

  6.   

    那我接着问.现在可以取到值了.我选择dropdownlist时,页面不更新.该怎么解决啊!谢谢了
      

  7.   

    选择dropdownlist,需要从数据库读取数据,又不希望页面刷新,以当前的方法是不可能实现的,要实现这一点,就要用到“异步javascript和xml”技术,即ajaxCSDN的 web开发社区里面有一个专门讨论ajax的小区,lz可以先了解一下,在asp.net2.0中应用ajax也是蛮方便的~
      

  8.   

    for(int i=0;i<this.gridview.Rows.Count;i++)
    {
    Panel panel = (Panel)this.gridview.Rows[i].Cells[PanelIndex].Controls[1];
    TextBox textBox = (TextBox)panel.Controls[i];
    }上面PanelIndex是你 Panel放在gridview的第几列
      

  9.   

    在页面发回的Page_Load 里 不BindDate();
     在dropdownlist 的selectedindexchange 里再 BindDate();
    (dropdownlist 要autopostback=true;
      

  10.   

    我已经按楼上的做了,再次感谢 Eddie005(♂) №.零零伍 耐烦的指导.谢谢!  ajax  我会去学的.