2

私のコードには次のものがあります:

      { name: 'ID', index: 'ID', width: 40 , formatter: 'showlink', search: false, formatoptions: { baseLinkUrl: '/Program/EditMicro'} },

PNをクリックすると、コントローラーの次のアクション結果が表示されます。

    /Program/EditMicro

代わりに、次のActionResultに送信される前にjsonを実行したいので、選択されたもの(選択されたID)に関する情報をJqueryでキャプチャします。

    /Program/EditMicro

要約すると、ハイパーリンクのクリックの値が何であるかをキャプチャする方法はありますか?それから、Jqueryでそれをキャプチャできます。

前もって感謝します

4

2 に答える 2

6

ほとんどの場合、次のようなものを使用するだけで十分です

formatter: "showlink",
formatoptions: {
    baseLinkUrl: "/Program/",
    showAction: "EditMicro",
    idName: "myId"
}

リンクが次のように生成される場合

<a href="/Program/EditMicro?myId=123">text from the cell</a>

アクションに行のIDがある場合は、データベースから直接必要なその他の追加情報を取得できます。

または、回答に記載されている簡単なトリックを使用することもできます。CSSクラスを定義します

.myLink { text-decoration: underline; cursor: pointer; }

次に、以下のようなカスタムフォーマッタを使用できます

formatter: function (cellValue, options, rowObject) {
    return "<span class='myLink'>" + cellValue + "</span>";
},
cellattr: function () {
    return " title=\"Click here to go to EditMicro\"";
}

<span>リンクのようにユーザーを探す方法を生成します。beforeSelectRowまたはonCellSelectコールバックを使用して、セルのクリックイベントをキャッチできます。例えば

beforeSelectRow: function (rowid, e) {
    var $td = $(e.target).closest("td"),
        iCol = $.jgrid.getCellIndex($td[0]);
    if (this.p.colModel[iCol].name === 'note') {
        window.location = "/Program/EditMicro/" +
            encodeURIComponent(rowid);
        return false;
    }
}

必要に応じて、getColまたはgetRowDataをクリックした行から他のデータを取得し、その情報をターゲットURLに追加できます。

于 2013-01-26T13:46:01.603 に答える
0

jqGrid宣言に以下を追加して、デフォルトのクリックアクションがトリガーされないようにすることができます。

.click(function (event) { event.preventDefault(); })

次に、次の方法で独自のクリックイベントハンドラーのようなことを行うことができます。

$('a').click(function () { //ToDo: Extra actions before submitting to controller });

独自のカスタムフォーマッターを作成して、表示するハイパーリンクに追加情報を追加し、グリッドの作成中にその作業を行うこともできます。

編集:デフォルトのクリック機能を無効にし、自分の関数をバインドしてアラートを表示する実例(自分の関数をコーディングして必要な追加の作業を行う場所を示す例として)。 http://jsfiddle.net/QEzhr/33/

于 2013-01-25T20:05:01.883 に答える