2

データテーブルにバインドするグリッドビューがあります。条件のある行のコンテキストを追加したいと思います。私はイベントでこのコードを使用します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クラスがない行にコンテキストメニュー(エクスプローラーコンテキストメニューでもカスタムコンテキストメニューでもない)を表示せず、cssクラスがある行にコンテキストメニューを表示しないHasMenuことです。スクリプトにどのような変更が必要ですか?

ありがとう

4

1 に答える 1

1

contextmenu現在、グリッドビュー全体のイベントを聴いています。

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

これを個々の行に変更する必要があります。

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

rowselectorただし、マークアップで行が定義されているのはどこですか。

たとえば、行がaの場合、次の<TR>ように記述します。

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

それ以外の場合、行が子<DIV>要素である場合は、次のように記述します。

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

2つのプレーンな文字列を連結していることに注意してください。JavaScript変数は含まれていません。あなたは次のように書いた方がいいでしょう:

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