我创建了一个 javascript 函数来从 gridview 中获取选定的行,当我使用 时它工作正常BoundField DataField,但是当我在 gridview 中使用时label它ItemTemplate会返回一个值,但带有 html 代码。例如当我使用时BoundField DataField我得到这个:user name 当我在里面使用标签时ItemTemplate我得到这个:<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>
2 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
如果单元格中有多个跨度或其他元素,则可以执行此操作
row.cells[1].getElementsByTagName("span")[0].innerHTML;
慕侠2389804
TA贡献1719条经验 获得超6个赞
您需要检查子节点,如果存在,则从中获取值。
像这样的东西:
<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>
我还没有测试过这段代码,但它应该能给你这个想法。根据需要修改它。
此代码示例做出了一些可能会破坏它的假设,因此可能需要更加稳健。
添加回答
举报
0/150
提交
取消