2

我有一个绑定到数据表的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;

        });
    });

问题是我没有在没有css类的行上显示任何上下文菜单(不是资源管理器上下文菜单,也不是我的自定义上下文菜单),而是HasMenu为有css类的行显示上下文菜单HasMenu。我的脚本需要什么更改?

谢谢

4

1 回答 1

1

现在,您正在收听contextmenu整个 gridview 的事件:

$("#" + '<%= GridView1.ClientID %>')

您需要将其更改为单个行:

$('#" + '<%= GridView1.ClientID %> rowselector.HasMenu')

rowselector然而,在您的标记中定义的行在哪里。

例如,如果一行是 a<TR>那么你会写

$("#" + '<%= GridView1.ClientID %> tr.HasMenu')

否则,如果行是子<DIV>元素,您可能需要编写类似的内容

$("#" + '<%= GridView1.ClientID %> > div.HasMenu')

请注意,您正在连接两个纯字符串,不涉及 JavaScript 变量。你不妨写:

$('#<%= GridView1.ClientID %> rowselector.HasMenu')
于 2012-04-23T09:09:43.593 回答