C# 如何在jQuery中通过右键单击获取ASP.NET GridView的单元格ID?
我的应用程序中有一个GridView。我需要为用户提供一些功能来编辑某些单元格或删除行。当用户右键单击某个单元格时,我需要显示上下文菜单。当用户单击“编辑”时,我需要显示一些帮助信息,并将此单元格置于编辑模式,并将焦点设置在它上。这是我的密码:C# 如何在jQuery中通过右键单击获取ASP.NET GridView的单元格ID?,c#,javascript,jquery,asp.net,gridview,C#,Javascript,Jquery,Asp.net,Gridview,我的应用程序中有一个GridView。我需要为用户提供一些功能来编辑某些单元格或删除行。当用户右键单击某个单元格时,我需要显示上下文菜单。当用户单击“编辑”时,我需要显示一些帮助信息,并将此单元格置于编辑模式,并将焦点设置在它上。这是我的密码: <asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> <script type="text/javascript">
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
$(document).ready(function () {
$("#myMenu").hide();
$("#helpRow").hide();
$("table[id$='gvListOfMatters'] > tbody > tr > td").bind('contextmenu', function (e) {
$("#myMenu").hide();
e.preventDefault();
$(this).css("cursor", "pointer");
iColIndex = $(this).closest("tr td").prevAll("tr td").length;
iRowIndex = $(this).closest("tr").prevAll("tr").length;
rowid = $(this).parent().children()[0].innerHTML;
if (!isNaN(rowid)) {
//call context menu here
$("#myMenu").css({
top: e.pageY + "px",
left: e.pageX + "px",
position: 'absolute'
});
$("#myMenu").show(100);
}
});
});
//hide when left mouse is clicked
$(document).bind('click', function (e) {
$("#myMenu").hide(100);
});
var rowid = 0;
function fnEdit() {
var lnkEdit = document.getElementById('<%=lnkEdit.ClientID %>');
var hiddenField = document.getElementById('<%=fldRowID.ClientID %>');
hiddenField.value = rowid;
lnkEdit.click();
};
function fnDelete() {
var lnkDelete = document.getElementById('<%=lnkDelete.ClientID %>');
var hiddenField = document.getElementById('<%=fldRowID.ClientID %>');
hiddenField.value = rowid;
lnkDelete.click();
};
</script>
<div id="helpRow">
</div>
<asp:GridView ID="gvHelpRow" runat="server" AutoGenerateColumns="true" CssClass="helpRow" ShowHeader="false" Visible="false"></asp:GridView>
<br />
<div id="SourceGrid" class="table responsive">
<asp:GridView ID="gvListOfMatters" runat="server"
SOME Tamplate COLUMNS…
</asp:GridView>
</div>
<asp:LinkButton ID="lnkEdit" runat="server" Style="display: none" OnClick="lnkEdit_Click" />
<asp:LinkButton ID="lnkDelete" runat="server" Style="display: none" OnClick="lnkDelete_Click" />
<asp:HiddenField ID="fldRowID" runat="server" />
<%--↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ContextMenu↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓--%>
<div id="myMenu" class="contextMenu">
<table style='width: 100%;'>
<tr>
<td onclick="fnEdit();">- Edit
</td>
</tr>
<tr>
<td onclick="fnDelete();">- Delete
</td>
</tr>
</table>
</div>
<%--↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ContextMenu↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑--%>
</asp:Content>
$(文档).ready(函数(){
$(“#我的菜单”).hide();
$(“#helpRow”).hide();
$(“表[id$='gvListOfMatters']>tbody>tr>td”).bind('contextmenu',函数(e){
$(“#我的菜单”).hide();
e、 预防默认值();
$(this.css(“游标”、“指针”);
iColIndex=$(此).最近的(“tr td”).prevAll(“tr td”).length;
iRowIndex=$(this).closest(“tr”).prevAll(“tr”).length;
rowid=$(this).parent().children()[0].innerHTML;
如果(!isNaN(rowid)){
//在这里调用上下文菜单
$(“#我的菜单”).css({
顶部:e.pageY+“px”,
左:e.pageX+“px”,
位置:'绝对'
});
$(“我的菜单”).show(100);
}
});
});
//单击鼠标左键时隐藏
$(文档).bind('click',函数(e){
$(“#我的菜单”).hide(100);
});
var-rowid=0;
函数fnEdit(){
var lnkEdit=document.getElementById(“”);
var hiddenField=document.getElementById(“”);
hiddenField.value=rowid;
lnkEdit.click();
};
函数fnDelete(){
var lnkDelete=document.getElementById(“”);
var hiddenField=document.getElementById(“”);
hiddenField.value=rowid;
lnkDelete.click();
};
我找到了自己的路!
首先,我将函数绑定到td
而不是tr
$("table[id$='gvListOfMatters'] > tbody > tr > td").bind('contextmenu', function (e) {
$("#myMenu").hide();
e.preventDefault();
$(this).css("cursor", "pointer");
iColIndex = $(this).closest("tr td").prevAll("tr td").length;
iRowIndex = $(this).closest("tr").prevAll("tr").length;
rowid = $(this).parent().children()[0].innerHTML;
if (!isNaN(rowid)) {
//call context menu here
$("#myMenu").css({
top: e.pageY + "px",
left: e.pageX + "px",
position: 'absolute'
});
$("#myMenu").show(100);
}
});
现在我可以获取rowID、cellID以及这一行中每个单元格内的所有文本。
我将用最新更新更新我的原始问题