5

ユーザー アカウントを管理 (作成/変更) するための編集可能な Kendo Grid があります。編集はポップアップで行われます (インラインまたはバッチではありません)。有効なデータがサーバーに提供されることを確認するためにクライアント側の検証がありますが、サーバー側で作成/更新が失敗した場合にサーバーからの応答を処理する方法がわかりません。たとえば、リクエストがHTTP 404または500で失敗したため、「失敗した」とは言いません。サーバー上のスクリプトがデータについて何か気に入らず、義務付けることを拒否したため、私は失敗したと言っています。

誰かがこれを達成する方法を教えてもらえますか? 私ができるようにしたいのは、更新がサーバーに送信された後、応答を待つことです。応答がすべて OK である場合は、それで問題ありません。応答で何かがうまくいかなかったと言われた場合、(A) ポップアップ編集ウィンドウを開いて入力したままにし、(B) 拒否の理由についてユーザーにフィードバックを提供できるようにしたいと考えています。すべてが OK であるという応答がない限り、データをグリッドにコミットしないでください。同様に、編集ポップアップは、サーバーが OK と言うまで開いたままにする必要があります。

私は、私が望むことを達成できる限り、サーバーの応答をどのようにフォーマットするかについて柔軟です。

剣道の公式 API ドキュメントに案内される前に、私はすでにそれをよく知っており、毎日参照しています。しかし、控えめに言っても、それは不完全であり、このトピックに関連するものは何も見つかりません. ドキュメンテーションで私に役立つと思われるものを見つけた場合は、ぜひドキュメンテーションを参照してください =)

リクエストに応じて、グリッドを作成するためのコードを以下に示します。

$("#kendo_user_grid").kendoGrid({
    columns: [{
        title: "Last name",
        field: "lName"
    },{
        title: "First name",
        field: "fName"
    },{
        title: "Business unit",
        field: "businessUnit"
    },{
        title: "Username",
        field: "loginId"
    },{
        title: "Email address",
        field: "email"
    },{
        title: "Phone",
        field: "phone"
    },{
        title: "Address",
        field: "address"
    },{
        title: "City",
        field: "city"
    },{
        title: "State",
        field: "state"
    },{
        title: "Zip code",
        field: "zipcode"
    },{
        title: "Country",
        field: "country"
    },{
        title: "Time zone",
        field: "timezone"
    },{
        title: "Privileges",
        field: "privs"
    },{
        command: ["edit","destroy"],
        title: " "
    }],
    scrollable: false,
    dataSource: {
        transport: {
            read: {
                url: "manageUsers.phtml",
                data: { mode: "fetch" },
                dataType: "json",
                type: "POST"
            },
            update: {
                url: "manageUsers.phtml",
                data: { mode: "update" },
                type: "POST"
            },
            destroy: {
                url: "manageUsers.phtml",
                data: { mode: "destroy" },
                type: "POST"
            },
            create: {
                url: "manageUsers.phtml",
                data: { mode: "create" },
                type: "POST"
            },
            batch: false
        },
        schema: {
            data: "records",
            total: "total",
            model: {
                id: "userId",
                fields: {
                    userId: { editable: false, nullable: true },
                    lName: { type: "string", editable: true, validation: { required: true } },
                    fName: { type: "string", editable: true, validation: { required: true } },
                    businessUnit: { type: "string", editable: true, validation: { required: true } },
                    loginId: { type: "string", validation: { required: true } },
                    email: { type: "string", validation: { required: true } },
                    phone: { type: "string" },
                    address: { type: "string" },
                    city: { type: "string" },
                    state: { type: "string" },
                    zipcode: { type: "string" },
                    country: { type: "string" },
                    timezone: { type: "string" },
                    privs: { type: "string" }
                }
            }
        },
        pageSize: 20,
        serverPaging: false,
        serverFiltering: false,
        serverSorting: false
    },
    filterable: true,
    sortable: true,
    pageable: true,
    editable: {
        mode: "popup",
        template: kendo.template($("#kendo_edit_user_template").html())
    },
    toolbar: ["create","save","cancel"]
});
4

1 に答える 1