protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        for (int i = 0; i < gvStores.Rows.Count ; i++)
        {
            TextBox tbox=new TextBox();
            
            for (int ia = 0; ia < gvStores.Rows.Count; ia++)
            {
                 tbox = (TextBox)gvStores.Rows[i].FindControl("TextBox1");
                if (tbox.Text.Trim().Length > 0)
                {
                    Response.Write(ia);
                    //Response.Write(gvStores.DataKeys[i].Value.ToString());
                }
            }
          //  ((CheckBox)gvEntryList.HeaderRow.FindControl("CheckBox2")).Checked = isCheck;
        }
    }这段代码是在GridView里的添加的一个文本框,非GridView的编辑模式.
通过Response输出的结果来看,所有的行的TextBox1的内容都是一样的.我希望只有我编辑的那行的文本框才有值,其他都是空的.
怎么做?

解决方案 »

  1.   

    楼主你的代码好像逻辑不对啊,本来就只有你编辑的那个文本框有值,不明白为什么要有2次循环?你这样写当然每次都输出所有的ia值了(0到gvStores.Rows.Count-1)
    protected void TextBox1_TextChanged(object sender, EventArgs e) 
        { 
            for (int i = 0; i  < gvStores.Rows.Count ; i++) 
            { 
                TextBox tbox=new TextBox(); 
                 
                //for (int ia = 0; ia  < gvStores.Rows.Count; ia++) 
                //{
     
                     tbox = (TextBox)gvStores.Rows[i].FindControl("TextBox1"); 
                    if (tbox.Text.Trim().Length > 0) 
                    { 
                        Response.Write(i); 
                        //Response.Write(gvStores.DataKeys[i].Value.ToString()); 
                    } 
                //} 
              //  ((CheckBox)gvEntryList.HeaderRow.FindControl("CheckBox2")).Checked = isCheck; 
            } 
        } 
    这样输出结果就是 “你编辑的那行的文本框”所在行的索引了(从0开始)如果你要得到你所编辑的文本框的值:
    Response.Write(((TextBox)sender).Text);如果你要得到你所编辑的文本框所在行的行索引:
    int rowIndex = ((GridViewRow)((TextBox)sender).Parent.Parent).RowIndex;其实不是很明白你到底想要什么,希望对你有所帮助
      

  2.   

    你干吗要循环2次?
    一次就可以了啊
    遍历GridView的Rowsfor (int ia = 0; ia  < gvStores.Rows.Count; ia++) 
         { 
             TextBox tbox = (TextBox)gvStores.Rows[i].FindControl("TextBox1"); 
             if (tbox.Text.Trim().Length > 0) 
                { 
                    Response.Write(ia); 
                    Response.Write(i);//看看GridView的行Index就知道了
                        //Response.Write(gvStores.DataKeys[i].Value.ToString()); 
                 } 
          } 这样就可以了
      

  3.   

    原来是错在那里.
    这段程序是把全选CheckBox的功能改成TextBox拿来用的,有些地方没仔细研究,所以出错了没找到错误所在.
    谢谢三楼和四楼