0

今jqGridで遊んでいます。そして、いくつか質問があります。

私がやりたいことはとてもシンプルです。CRUD 操作用のカスタム Web サービスを作成しました。ajax リクエストを使用して、JSON を取得し、指定された jqGrid にバインドします。

新しいインライン ナビゲーターを使用して、新しいレコードを作成し、既存のレコードを更新したいと考えています。私が知っているように、更新用のリンクを設定する「editurl」プロパティがあります。しかし、アイテムを追加するためにも使用されています。

これらの URL をアクションごとに分けて、JSON と行データをサービスに渡すことはできますか? または、より良いイベント-ある種のハンドラーで、サービスへのカスタムAjaxリクエストを作成するだけですか?

inlineNav add params を使用しようとしましたが、「oneditfunc」のみのハンドラーを設定することができました。

フォーム編集では、そのような問題はありませんでした。多分私は何かを逃しましたか?

UPD:必要なリクエストを送信するカスタムの「保存」および「キャンセル」ボタンを使用してカスタマイズできました。しかし、もっと簡単な解決策があることを願っていますか?

UPD私のサンプルはここで入手できます: http://jqgridtest.cloudapp.net:8080/いずれにせよ - 追加または削除、常に Edit メソッドのみが呼び出されます。私は何を間違っていますか?

UPD説明されているリンクに関する問題は、クロスドメイン ポリシーと共通するものは何もありません。クロスドメインの問題がある場合 - 「405 メソッドは許可されていません」などの別のエラーがあります。また、デプロイされたサンプル サービスには、クロスドメイン リクエストの回避策があります。はい、IE では動作しません。クライアント サンプルでは、$.support.cors=true​​IE で動作するように追加していないからです。ここでもチェックアウトできます: http://jsbin.com/uxered/7/相対 URL の追加と編集があります。しかし、編集だけが呼び出されています。

また、jqgridtest.cloudapp.net での作業のビデオ証明: http://www.youtube.com/watch?v=zivlvsV1r98&feature=youtu.be ご覧のとおり、リクエストは成功しているため、クロスドメインの問題はありませんが、編集 URL が呼び出されます。

4

1 に答える 1

0

メソッドinlineNavにはオプションがaddParamsありeditParamsます。このメソッドaddRowには、行の追加時に使用されるeditRowaddRowParamsのオプションを指定するために使用できるオプションがあります。したがって、次のパラメーターが機能するはずです

$("#grid").jqGrid("inlineNav", "#pager", {
    addParams: {
        addRowParams: {
            keys: true,
            url: "/MyAddRowAction"
        }
    },
    editParams: {
        keys: true,
        url: "/MyEditRowAction"
    }
});

更新: デモのエラーは非常に簡単です:で動作するデモでurl:"http://jqgridtest.cloudapp.net:81/Service1.svc/web/AddData"とを使用します。Same origin policyという名前で知られる Ajax にはセキュリティ制限があります。同じ ASP.NET サイトに Web サービスを含める必要があります(同じプロジェクトに含めるだけです)。その後、およびのような相対URL パスを使用できるようになり、コードが機能します。url:"http://jqgridtest.cloudapp.net:81/Service1.svc/web/EditData"http://jqgridtest.cloudapp.net:8080/Service1.svc url:"/Service1.svc/web/AddData"url:"/Service1.svc/web/EditData"

于 2012-06-29T07:47:31.623 に答える