繁体   English   中英

asp.net C# get selected row from gridview using javascript function

[英]asp.net C# get selected row from gridview using javascript function

I created a javascript function to get the selected row from a gridview and it is working fine when I use BoundField DataField , but when I use label inside the ItemTemplate in the gridview it returns a value but with html codes.

例如,当我使用BoundField DataField我得到这个:

user name 

当我在ItemTemplate中使用 label 时,我得到了这个:

<span id="gvCustomers_Label4_6">user name</span>

这是我的代码:

<script type ="text/javascript" >
    function GetSelectedRow(UserLink) {
        var row = UserLink.parentNode.parentNode;
        var Userid = row.cells[1].innerHTML;
        alert(Userid);
        return false;
    }
</script>

这是 gridview 代码:

<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false" AllowPaging="true" OnPageIndexChanging="OnPaging">        
    <Columns>
        <asp:TemplateField HeaderText="user name">
            <ItemTemplate>
                <asp:Label ID="Label4" Text='<%#  Eval("user_name")  %>' runat ="server"/>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="ButtonSearch" runat="server" ClientIDMode="Static"  Text='select'  OnClientClick = "return GetSelectedRow(this)" CommandArgument ='<%# Bind("user_name") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

如果单元格中有多个跨度或其他元素,则可以执行此操作

row.cells[1].getElementsByTagName("span")[0].innerHTML;

您需要检查子节点,如果存在,则从中获取值。

像这样的东西:

<script  type ="text/javascript" >
                function GetSelectedRow(UserLink) {
                    var row = UserLink.parentNode.parentNode;
                    var Userid;
                    if(row.cells[1].firstChild) {
                         Userid = row.cells[1].firstChild.innerHTML;
                    } else { 
                         Userid = row.cells[1].innerHTML;
                    }
                    alert(Userid);
                    return false;
                }

      </script>

我没有测试过这段代码,但它应该会给你这个想法。 根据需要对其进行修改。

此代码示例做了一些可能会破坏它的假设,因此可能需要更健壮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM