Gridview中有一列都是链接,点击它弹出该行的行号,用javascript如何做到? 请大虾帮忙。

解决方案 »

  1.   

    在RowDataBound()中写
    ,别忘了加if(e.Row.RowType==DataControlRowType.DataRow)
    e.Row.Attributes.Add("OnClick","SelectRow(" + e.Row.RowIndex + ")");
    前台:
    function SelectRow(Index)
    {
        alert(index);
    }
      

  2.   

    点击链接的哪行?那就在RowDataBound 的时候 找到那个那个控件吧 Button btnEdite = (Button)e.Row.FindControl("btn_Edit"); 超链接就转换成超链接
    btnEdite.Attributes.Add("OnClick","SelectRow(" + e.Row.RowIndex + ")");  其他的按2楼就行了
      

  3.   

    谢谢楼上2位仁兄! girdview的行号已经取到,最终目的是要取到该行的某个隐藏模版列的值,如何实现?
    我在想是不是搞个hashtable,在DataBound方法里把行号跟值存入,再在前台javaScript中根据行号取出值。
    不过又不知道如何在前台去取得后台的hashtable的对象。
    总之最终目的是用javascript取得gridview行的某个隐藏模版列的值,请大虾帮忙,成了就给分,谢谢
      

  4.   

    吧你那个隐藏的模板列的转化为lable(本来也是) 给个id 
    然后再 RowDataBound 的时候  Lable lable= (Lable)e.Row.FindControl("lable");
    然后 lable.text就是你隐藏的值了
    然后 
    Button btnEdite = (Button)e.Row.FindControl("btn_Edit"); 超链接就转换成超链接
    btnEdite.Attributes.Add("OnClick","SelectRow(" +lable.text+ ")");  
    页面前台的JS 参数就是这个值了。
      

  5.   


    谢谢,请问如何把那个隐藏的模板列的转化为lable?
    以下就是那个隐藏的模板列:
    <asp:TemplateField HeaderText="INS_NO" Visible="false">
        <Edititemtemplate>
    <asp:TextBox id="txtINS_NO" runat="server" Text='<%# Bind("INS_NO") %>' Class="readonlyColumn" tabIndex=-1 style="width:160px;"></asp:TextBox>    
        </Edititemtemplate>
        <itemstyle horizontalalign="Left" cssclass="column"/>
        <Itemtemplate>
            <asp:Label id="lblINS_NO" runat="server" Text='<%# Bind("INS_NO") %>'></asp:Label>
        </Itemtemplate>
    </asp:TemplateField>
      

  6.   

    你这样就不需要隐藏了  然后你想得到的是 <asp:Label id="lblINS_NO" runat="server" Text='<%# Bind("INS_NO") %>'></asp:Label>
     这个控件的值 那么直接 Lable lable= (Lable)e.Row.FindControl("lblINS_NO");  就可以了 你具体的gridview我也不知道什么需求
    如果你要一个隐藏的值得 那么你就在这个模板列里面加一个 hidfiled也行  反正模板里面什么控件都能加 什么值都能取到的
      

  7.   

    谢谢。我的这个项目的GridView比较特殊,是被包装过的。
    基本上GirdView里有的功能它也都有,不过有些功能被禁止了。
    比如刚才的btnEdite.Attributes.Add("OnClick","SelectRow(" +lable.text+ ")");就不让用,
    只能在前台用onClientClick="SelectRow(...)",所以现在有点郁闷,
    只能在后台得DataBound里把该页的行号和那个隐藏模版列的值存进数组或hashTable等,再在前台根据行号取得值了。
    才疏学浅,我是连这个都不大会,准备上网查,真不好意思,呵呵。如果有那位大虾知道用这种方法怎么实现的话,简单贴点关键代码,谢谢。
      

  8.   

    已经实现,利用了隐藏的ListBox来实现的。多谢locoasta,辛苦了,吃完午饭结贴送分:)
      

  9.   

    那怎么能在JS那边得到GridView里面控件的ID.