我有一个gridview,它绑定到一个数据表。我想为有条件的行添加上下文。我在RowDataBound
事件中使用此代码:
if (e.Row.Enabled == true && e.Row.Cells[6].Enabled == true)
{
e.Row.CssClass = "HasMenu";
}
现在我编写此代码以在网格上显示上下文菜单:
$(document).ready(function () {
$('#menu').click(function () {
$('#menu').hide();
});
$(document).click(function () {
$('#menu').hide();
});
$("#" + '<%= GridView1.ClientID %>').bind("contextmenu", function (e) {
$('#menu').css({
top: e.pageY + 'px',
left: e.pageX + 'px'
}).show();
return false;
});
});
问题是我没有在没有HasMenu
css类的行上显示任何上下文菜单(不是资源管理器上下文菜单而不是我的自定义上下文菜单),并且显示了具有{{1的行的上下文菜单我的脚本需要改变什么?
感谢
答案 0 :(得分:1)
现在您正在收听整个gridview的contextmenu
事件:
$("#" + '<%= GridView1.ClientID %>')
您需要将其更改为单个行:
$('#" + '<%= GridView1.ClientID %> rowselector.HasMenu')
然而,rowselector
在标记中定义了一行。
例如,如果一行是<TR>
,那么你会写
$("#" + '<%= GridView1.ClientID %> tr.HasMenu')
否则,如果行是子<DIV>
元素,您可能需要编写类似
$("#" + '<%= GridView1.ClientID %> > div.HasMenu')
请注意,您要连接两个普通字符串,不涉及任何javascript变量。你不妨写一下:
$('#<%= GridView1.ClientID %> rowselector.HasMenu')