我有一个gridview,里面一列要有一个文本框:
1.如果用asp:TextBox,就可以在后台用findControl获得,但是由于服务器控件,id变得无法知道,就不能用JavaScript去操作;
2.若用input标签呢,id固定了,JavaScript可以访问,但我后台又不能用findControl去获取它的值。
我应该怎么办啊?

解决方案 »

  1.   

    不一定要用FindControl的,可以用单元格的控件顺序来定位.如e.Item.Cells[0].Controls[0]
      

  2.   

    good
    同时 id  你也可以去查看源码获得他的id
      

  3.   

    你的想法就错误了   
    gridview控件是循环的   所以你无法知道TextBox的id
    但是你可以循环找到某一行的TextBox(根据下标来找)
      

  4.   

    查源码获取ID会不会不准确?
    e.Item.Cells[0].Controls[0]的e我没有啊,
    我用的是:
             foreach (GridViewRow gvr in this.gvLists.Rows)
            {
                if (gvr.RowType == DataControlRowType.DataRow)
                {
                    HtmlInputText txtPay = this.gvLists.接着怎么写呢?
                }
            }
      

  5.   

    1. 如果客户端事件由TextBox自己触发,可以直接写事件名=函数名(this),例如onblur=valiateInt(this),当鼠标移开文本框的时候,验证其是不是整数
       如果客户端事件是由别的情况触发,虽然你对循环生成的文本框的ID不清楚,但你该知道GridView的ID吧,GridView其实就是table,你用table.getElementsByTagName("input")不就获取里面的文本框了吗2. 其实ID也不固定,你查看源码就会知道,如果想在后台访问,就给input加上runat=server属性结论,用哪个都可以
      

  6.   

    问题就是gridview的文本框,我用input标签,并且是不要runat=server,这样如何循环获得该input的value?
    请各位帮帮忙!
      

  7.   

    问题就是gridview的文本框,我用input标签,并且是不要runat=server,这样如何循环获得该input的value? 
    请各位帮帮忙! =========
    如果你一定要用input,那么用Request来接收如:<input name="aa" 
    在后台用String str = Request.Form["aa"]那么你得到的值可能是"123,344,55"用,号隔开.
      

  8.   

    补充1:
    当然,如果GridView里面还有别的文本框列或者Button列,得事先定义好控件的附件属性,例如tag=y,然后根据这个附加属性去定位