gridview有两列模板列。如下示意代码:
<templatefield>
<itemfield>
<input type="text" />
</itemfiled>
<templatefiled>
<templatefield>
<itemfield>
<input type="image"  onclick="客户端方法"/>
</itemfiled>
<templatefiled>现在当我点击第二个模板列type="image"的时候,如何获取当前点击这行的type="text"的值。

解决方案 »

  1.   

    $(this).prevAll("input[type='text']");
    prevAll()同辈元素 。
    不知道对不对 。  
      

  2.   

    $(this).parent().find(":text").val()
    $(this).parent() 取得 <tr>
    如果这一行里有多个text的话你只能加个id或其它属性了
      

  3.   

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
        <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
        <script type="text/javascript">
            function getText(obj){
                alert($(obj).parent().prev().find(":text").val());
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <input id="Text1" type="text" value='<%#Eval("Name") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <img onclick="getText(this)" src="images/blog_bnt.gif" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            </asp:GridView>
        </form>
    </body>
    </html>
      

  4.   

    传个参数 this 进去 方法 直接  对象.值
      

  5.   


    //获取点击对象的父元素(td)的上一个同级元素(td),然后查找他的type="text"的值
            function getText(obj){
                alert($(obj).parent().prev().find(":text").val());
            }
      

  6.   

    如果不是取点击对象的上一个元素的话可以通过
    $(obj).parent().parent().eq(第几个).find(":text").val()
      

  7.   

    额 看错 不好意思 你可以取到那个 <input type="image" onclick="客户端方法"/> 的ID赛  用此推断那个 text的ID 
      

  8.   

    我测试过可以,如果不可以,方便的话把你的gridview帖下
      

  9.   

    应该可以了。我gridview里没有什么东东
    除了绑定列,就这两个模板列<asp:TemplateField ItemStyle-CssClass="Sequence FixedCloumn" ItemStyle-Width="8%"
                                HeaderText="序号" InsertVisible="False">
                                <ItemTemplate>
                                    <asp:Label ID="Label2" runat="server" Text='<%# this.sgv.PageIndex * this.sgv.PageSize + this.sgv.Rows.Count + 1 %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField ItemStyle-Width="15%" DataField="WorkSheetName" HeaderText="工作表">
                            </asp:BoundField>
                            <asp:TemplateField HeaderText="开始行号">
                                <ItemTemplate>
                                    <input type="text" value='<%#Eval("StartRow")  %>' id="startRow" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField ItemStyle-Width="15%" HeaderText="结束行号">
                                <ItemTemplate>
                                    <input type="text" value='<%#Eval("EndRow")  %>' id="endRow" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField ItemStyle-Width="8%" HeaderText="开始导入">
                                <ItemTemplate>
                                    <input type="image" src="../Images/import.gif" onclick="" />
                                </ItemTemplate>
                            </asp:TemplateField>
      

  10.   

    开始行号和结束行号都要获取吗?如果要的话就要重新写个,因为刚才写的是获取img所属的td的上一个td元素,
      

  11.   


     var test = function(obj){
            var texts = $(obj).parent().parent().find("input[type='text']");
            alert("开始行号:"+texts.eq(0).val()+"   结束行号:"+texts.eq(1).val());
        }
      

  12.   


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
        <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
        <script type="text/javascript">
            function getText(obj){
    //            var start = $(obj).parent().parent().find("td").eq(0).find(":text").val();
    //            var end = $(obj).parent().parent().find("td").eq(1).find(":text").val();
    //            alert(start+"=="+end);
    //或这种,两种都可以,我都有测试过
                $(obj).parent().parent().find(":text").each(function(){
                    alert($(this).val())
                })
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <input id="Text1" type="text" value='<%#Eval("Name") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <input id="Text1" type="text" value='<%#Eval("Name") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <img src="images/blog_bnt.gif" onclick="getText(this)" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            </asp:GridView>
        </form>
    </body>
    </html>
      

  13.   

    OK,thanks 
    这年头不懂jquery 还真是亏
      

  14.   


    //$(obj).parent().parent()查找到的是tr,然后查找td,find("td"),这里的eq索引是从0开始算,也就///是获取第0个td,你这里参数要改下,因为我测试只有三列!
    var start = $(obj).parent().parent().find("td").eq(0).find(":text").val();