如何在 Javascript 或 JQuery 中获取 Gridview 中的选定行
How do I get the selected row in Gridview in Javascript or JQuery
让我详细说明...下面是我的带有按钮字段的部分 gridview...我想要的是用于构建 url 的按钮的文本值:
<asp:GridView CssClass="gridUser" ID="UsersGrid" ClientIDMode="Static" runat="server" AllowPaging="true" AllowSorting="true" PageSize="5" OnPageIndexChanging="PageIndexChange" OnRowCommand="Paging" OnSorting="SortPage" OnRowCreated="RowCreated"
AutoGenerateColumns="false">
<PagerSettings Mode="NextPreviousFirstLast" FirstPageImageUrl="~/Images/Navigation/firstpageIcon.png" LastPageImageUrl="~/Images/Navigation/lastpageIcon.png"
NextPageImageUrl="~/Images/Navigation/forwardOneIcon.png" PreviousPageImageUrl="~/Images/Navigation/backOneIcon.png" Position="Bottom" />
<Columns>
<asp:TemplateField HeaderText="User Name" HeaderStyle-CssClass="gridHeader">
<ItemTemplate>
<asp:Button ID="UserLink" ClientIDMode="Static" runat="server" Text='<%#Eval("UserName") %>' CssClass="linkButton" OnClientClick = "return GetSelectedRow(this)"></asp:Button>
</ItemTemplate>
</asp:TemplateField>
这是我的 javascript:
$(".linkButton").click(function () {
var ul = document.getElementById('UserLink');
var row = ul.parentNode.parentNode;
var rowIndex = row.rowIndex - 1;
var Userid = row.cells[0].childNodes[1].value;
var User = Userid;
alert("Row is : " + row + "RowIndex is : " + rowIndex + "User ID is " + User);
});
我的问题是我返回的行是第一行...不是选定的行...我如何获得选定的行?感谢您的帮助。
您的第一个问题是,在您的按钮模板列中,您使用的是 Id=UserLink
,每一行都会重复。您的元素 ID 应该是唯一的。有关详细信息,请参阅此 answer。
你的第二个问题是 document.getElementById('UserLink');
实际上会找到 ID 为 UserLink
的第一个元素,它始终是第一行。在您的情况下,您可以使用 var ul = this;
,这应该会为您提供实际点击的按钮。
总结一下:
- 我建议使用您按钮上的 ID 或使它们独一无二。
- 将
document.getElementById('UserLink')
更改为 this
,这将为您提供被点击的按钮。
试试这个...根据您的要求更改命名约定
<script type = "text/javascript">
function GetSelectedRow(UserLink) {
var row = UserLink.parentNode.parentNode;
var rowIndex = row.rowIndex - 1;
var Userid = row.cells[0].innerHTML;
alert("RowIndex: " + rowIndex + " Userid : " + Userid + ");
return false;
}
</script>
让我详细说明...下面是我的带有按钮字段的部分 gridview...我想要的是用于构建 url 的按钮的文本值:
<asp:GridView CssClass="gridUser" ID="UsersGrid" ClientIDMode="Static" runat="server" AllowPaging="true" AllowSorting="true" PageSize="5" OnPageIndexChanging="PageIndexChange" OnRowCommand="Paging" OnSorting="SortPage" OnRowCreated="RowCreated"
AutoGenerateColumns="false">
<PagerSettings Mode="NextPreviousFirstLast" FirstPageImageUrl="~/Images/Navigation/firstpageIcon.png" LastPageImageUrl="~/Images/Navigation/lastpageIcon.png"
NextPageImageUrl="~/Images/Navigation/forwardOneIcon.png" PreviousPageImageUrl="~/Images/Navigation/backOneIcon.png" Position="Bottom" />
<Columns>
<asp:TemplateField HeaderText="User Name" HeaderStyle-CssClass="gridHeader">
<ItemTemplate>
<asp:Button ID="UserLink" ClientIDMode="Static" runat="server" Text='<%#Eval("UserName") %>' CssClass="linkButton" OnClientClick = "return GetSelectedRow(this)"></asp:Button>
</ItemTemplate>
</asp:TemplateField>
这是我的 javascript:
$(".linkButton").click(function () {
var ul = document.getElementById('UserLink');
var row = ul.parentNode.parentNode;
var rowIndex = row.rowIndex - 1;
var Userid = row.cells[0].childNodes[1].value;
var User = Userid;
alert("Row is : " + row + "RowIndex is : " + rowIndex + "User ID is " + User);
});
我的问题是我返回的行是第一行...不是选定的行...我如何获得选定的行?感谢您的帮助。
您的第一个问题是,在您的按钮模板列中,您使用的是 Id=UserLink
,每一行都会重复。您的元素 ID 应该是唯一的。有关详细信息,请参阅此 answer。
你的第二个问题是 document.getElementById('UserLink');
实际上会找到 ID 为 UserLink
的第一个元素,它始终是第一行。在您的情况下,您可以使用 var ul = this;
,这应该会为您提供实际点击的按钮。
总结一下:
- 我建议使用您按钮上的 ID 或使它们独一无二。
- 将
document.getElementById('UserLink')
更改为this
,这将为您提供被点击的按钮。
试试这个...根据您的要求更改命名约定
<script type = "text/javascript">
function GetSelectedRow(UserLink) {
var row = UserLink.parentNode.parentNode;
var rowIndex = row.rowIndex - 1;
var Userid = row.cells[0].innerHTML;
alert("RowIndex: " + rowIndex + " Userid : " + Userid + ");
return false;
}
</script>