3
jqgridでMVC 4 + EF 4.1を使用しています。 私はHTML & Javascriptで新しく、私はjqgrid内でカスタム編集jqueryダイアログを開くことなく成功しようとしています。あなたが望むふるまいを実装するより良い方法があれば、歓迎します。jqgrid + MVC:jqgridの中でダイアログを開くには?どのメソッドを使ってダイアログを開くことをお勧めしますか?
私ははすでに他の目的のために正常に動作しますクラス=「openDialog
」に取り付けられており、以下のjqueryのダイアログスクリプトを持っている:
$.ajaxSetup({ cache: false });
$(document).ready(function() {
$(".openDialog").live("click", function (e) {
e.preventDefault();
$("<div></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
height: $(this).attr("data-dialog-alt"),
width: $(this).attr("data-dialog-larg"),
autoResize: $(this).attr("data-dialog-autosize"),
position: 'top',
title: $(this).attr("data-dialog-title"),
close: function() { $(this).remove() },
modal: true,
buttons: { "Ok": function() { $(this).dialog("close"); } }
})
.load(this.href);
});
$(".close").live("click", function (e) {
e.preventDefault();
$(this).closest(".dialog").dialog("close");
});
});
これは私がやろうとしているものです。これはダブルクリックイベントのテストに過ぎません。動作すれば、コードを特定のボタンの中に入れます。
がをjqgrid
..........
{ name: 'act', index: 'act', width: 75, sortable: false, search: false }
],
ondblClickRow: function (id) {
if (id != null) {
// here I would like to launch the open dialog with a similar code:
// "<a class='openDialog' data-dialog-id='myEditDlg' data-dialog-autosize='false' data-dialog-alt='580' data-dialog-larg='740' data-dialog-title='test dialog' href='/mycontroller/EditDlg/myid'>test</a>"
}
},
pager: '#jqpager',
....
詳細基本的に
、今私は私がを必要とする各ボタン/アクションのためボタンスタイルのアンカーを置くカスタムフォーマッタを使用しています。例えば:
.....
gridComplete: function() {
applyZebra("mygrid");
var ids = grid.jqGrid('getDataIDs');
var rows = grid.jqGrid('getRowData');
for (var i = 0; i < ids.length; i++) {
var row = rows[i];
var t = row['myrow'];
var cl = ids[i];
tst = '<a class="mybuttonclass openDialog" data-dialog-id="tckDetDlg" data-dialog-autosize="false" data-dialog-alt="580" data-dialog-larg="740" data-dialog-title="test dialog" href="/mycontrolller/testDlg/' + t + '"></a>';
$("#jqTicketgrid").jqGrid('setRowData', ids[i], { act: tst });
}
},
.....
どこボタンのようなアンカーmybuttonclassスタイル...
はあなたの助けをありがとうございました! よろしくお願いします。
はあなたが行う手順のロジックをより明確に記述することができます。たとえば、1)グリッドにデータを入力します。 'act'欄にコメントに表示されている「」が含まれていますか?あなたは本当に全てのグリッドの*行にすべての 'data-dialog -... '属性を持つ必要がありますか?異なる行で異なる値はありますか?どのように '行為'の列を埋める?カスタムフォーマッタを使用していますか?私は ''に 'live'バインディングを作成する感覚を理解していません。 '$("。openDialog ")から関数を定義する方が簡単ですか?必要なパラメータを持つlive(" click "'ハンドラと直接関数を呼び出しますか? – Oleg
THX again Oleg。申し訳ありません、私は間違っていました。 **私はカスタムフォーマッタを使用していません**前に**使用していましたが、今は 'gridcomplete'の中でそのコードを使用しています。属性については、ソリューション全体に同じopendialog関数を使用しているので Pheraps私は間違ったことをしました...私を明確にしてください:なぜ私は ''のライブバインディングをしていると言いますか?私にとっては、バインディングはすでに '$ THX! – Larry
私はちょうど私の答えの一部を「UPDATED」と掲載しました。 "生きている"ことについての質問:それには多くの制限があり、いつもゆっくりと '束縛 'されますが、それはあなたがページ上にまだ存在していない要素に「バインド」します。前のコメントの意味は、ほとんどの場合、 ''要素の 'data-'属性にいくつかのパラメータを置き、それをイベントハンドルから取得することです。その代わりに、 'onclick'属性を定義して、何らかの関数を任意のパラメータで呼び出すことができます。たとえば、 'onclick =" myFunc(580,740、 '/ mycontrolller/testDlg/BlaBla'); falseを返します。 – Oleg