我创建了一个javascript函数来从网格视图中获取选定的行,当我使用BoundField DataField时,它工作得很好,但是当我在网格视图中的ItemTemplate中使用label时,它返回一个值,但带有html代码。
例如,当我使用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>下面是网格视图的代码:
<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>发布于 2020-12-03 03:03:31
如果像元中有多个跨度或其他元素,则可以执行此操作
row.cells[1].getElementsByTagName("span")[0].innerHTML;发布于 2020-12-03 02:58:19
您需要检查一个子节点,如果存在,则从中获取值。
如下所示:
<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>我还没有测试过这段代码,但它应该会给你一些启发。根据需要进行修改。
此代码样本做了一些假设,这可能会破坏它,因此可能需要更健壮。
https://stackoverflow.com/questions/65111745
复制相似问题