[英]get row when button clicked Gridview
I have a Gridview
with the first column containing an edit button for each row. 我有一个Gridview
,第一列包含每一行的编辑按钮。 The button on click calls btnEditClick()
which is a function in the javascript
. 点击按钮会调用btnEditClick()
,它是javascript
的函数。 How would I be able to access the row on which the button was clicked so that I can edit the values? 我如何能够访问单击按钮的行,以便可以编辑值? This is what I have so far, 这就是我到目前为止
var target = event.target || event.srcElement;
target.id = "btnEdit";
target.style.display = 'none';
var cancel = document.getElementById("btnCancel");
if (cancel != null)
cancel.click();
var grid = document.getElementById("gridRoles"); //get gridview
var row = target.parentElement.parentElement; //doesn't work
var hdn = document.createElement("input");
hdn.type = "hidden";
hdn.id = "hdnId";
hdn.name = "hdnId";
hdn.value = row.cells[1].innerHTML.toString();
row.cells[0].appendChild(hdn);
edit here's my gridview 编辑这是我的gridview
<asp:GridView ID="gridRoles" runat="server" Width="100%" AutoGenerateColumns="False" Font-Names="Arial" PageSize="12"
Font-Size="11pt" CssClass="textGrid" AlternatingRowStyle-BackColor="#CED8F6" HeaderStyle-BackColor="#F2F2F2"
AllowPaging="True" OnPageIndexChanged ="IndexChanged" OnPageIndexChanging ="PageChange" OnRowDataBound="gridroles_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button ID="btnEdit" runat="server" text="Edit" OnClientClick="btnEditClick()" />
<asp:Button ID="btnAdd" runat="server" text="Add" OnClientClick="btnAddClick()" Visible="false"/>
</ItemTemplate>
</asp:TemplateField>
...
If your gridview was something like this (html wise): 如果您的gridview是这样的(html明智的话):
<table id="gridRoles">
<tr>
<th>
button
</th>
<th>
row
</th>
</tr>
<tr>
<td>
<a href="#" onclick="getRowNumber(event);">row Index</a>
</td>
<td>
row 1
</td>
</tr>
<tr>
<td>
<a href="#" onclick="getRowNumber(event);">row Index</a>
</td>
<td>
row 2
</td>
</tr>
<tr>
<td>
<a href="#" onclick="getRowNumber(event);">row Index</a>
</td>
<td>
row 3
</td>
</tr>
</table>
Then you could create a function like this: 然后,您可以创建如下函数:
function getRowNumber(event) {
var target = event.target || event.srcElement;
target.id = "btnEdit";
target.style.display = 'none';
var cancel = document.getElementById("btnCancel");
if (cancel != null)
cancel.click();
//var grid = document.getElementById("gridRoles"); //get gridview
var row = target.parentElement.parentElement;
var hdn = document.createElement("input");
hdn.type = "hidden";
hdn.id = "hdnId";
hdn.name = "hdnId";
hdn.value = row.cells[1].innerHTML.toString();
row.cells[0].appendChild(hdn);
}
see my jsfiddle: https://jsfiddle.net/fictus/eqtavvwc/ 看到我的jsfiddle: https ://jsfiddle.net/fictus/eqtavvwc/
You could use the following function to retrieve the table row: 您可以使用以下函数来检索表行:
function findParentRow(child) {
var ctl = child;
while (ctl) {
if (ctl.tagName === 'TR') {
return ctl;
}
ctl = ctl.parentNode;
}
return null;
}
And call it like this: 并这样称呼它:
var row = findParentRow(target);
Use $(this).closest('tr'); 使用$(this).closest('tr');
Here's a fiddle , it's not gridview but it should be similar to what you need to do 这是一个小提琴 ,不是gridview,但它应该与您需要执行的操作类似
$(document).ready(function () {
$(".btnSave").click(
function () {
var closestTr = $(this).closest('tr');
console.log(closestTr[0]);
$('.clickedStuff').append(closestTr[0]);
}
);
});
Edit, I'm not familer with gridviews honestly, but this should work in principal if you use the right element for closest() 编辑,说实话,我不熟悉gridviews,但是如果您对close()使用正确的元素,则这原则上应该起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.