1

表AのJSON(php + mysqlエンジン)を介した外部データとこれらのデータの列の1つを使用して、KendoUIでグリッドを作成しようとしています。別の表Bからテキストラベルを取得します。

例、データは次のとおりです: idPermission=1、、、user_id=1business_unit_id=1permission=10

別のuser_id=1テーブル()から取得したいUsers名前1=John Doe、、2=Martin Brown

グリッドの視覚化でID1の代わりに「JohnDoe」を表示し、ID 2の代わりに「MartinBrown」を表示したい。レコードのインライン(またはポップアップ)編集時に、すでにターゲットに到達しており、 IDではなく名前のボックス!

これが私のコードです:

    <script>
    $(function() {

        var crudServiceBaseUrl = "http://localhost/ajax/";
        var dataTable = "UsersPermissions"; 

        // This is the datasource of the grid
        dataSource = new kendo.data.DataSource({
            transport: {
                read:  {
                    url: crudServiceBaseUrl + "table_action.php?op=R&tbl="+dataTable,
                    dataType: "json"
                },
                update: {
                    url: crudServiceBaseUrl + "table_action.php?op=U&tbl="+dataTable,
                    type: "POST"
                },
                destroy: {
                    url: crudServiceBaseUrl + "table_action.php?op=D&tbl="+dataTable,
                    type: "POST"
                },
                create: {
                    url: crudServiceBaseUrl + "table_action.php?op=C&tbl="+dataTable,
                    type: "POST"
                }
            },
            batch: true,
            pageSize: 10,
            schema: {
                model: {
                    id: "idPermission",
                    fields: {
                        idPermission: { editable: false, nullable: true },
                        user_id: { validation: { required: true } },
                        business_unit_id: {},
                        permission: { validation: { required: true } },
                    }
                }
            }
        });

        // This is the datasource of the user_id column
        usersSource = new kendo.data.DataSource({
            transport: {
                read:  {
                    url: crudServiceBaseUrl + "table_action.php?op=R&tbl=Users",
                    dataType: "json"
                }
            },
            batch: true,
            schema: {
                model: {
                    id: "idUser",
                    fields: {
                        idUser: {},
                        email: {},
                        password: {},
                        name: {},
                        last_login: {},
                        status: {}
                    }
                }
            }
        });

        $("#grid").kendoGrid({
            dataSource: dataSource,
            pageable: true,
            sortable: {
                mode: "single",
                allowUnsort: false
            },
            reorderable: true,
            resizable: true,
            scrollable: false,
            toolbar: ["create"],
            columns: [
                {                    
                    field: "user_id",
                    editor: function (container, options) {     // This is where you can set other control types for the field.                                                                   
                        $('<input name="' + options.field + '"/>').appendTo(container).kendoComboBox({
                            dataSource: usersSource,
                            dataValueField: "idUser",
                            dataTextField: "name",                            
                        });
                    },
                    title: "ID Utente"
                },
                { field: "business_unit_id", title: "Business Unit"},
                { field: "permission", title: "Permission"},
                { command: ["edit", "destroy"], width: "230px"}],
            editable: "inline"
        });

    });

</script>

編集モード、表示モードで行ったのと同じことをどのように行うことができますか?

4

2 に答える 2

0

あなたが HTML/JavaScript の方法について質問していたことは知っていますが、MVC を使用すると、これは別の良い方法です。

http://decisivedata.net/kendo-ui-grid-and-entity-framework-code-first-foreign-key-fields/

于 2014-07-31T00:07:38.740 に答える
0

それを達成するには、最初にサンプルデータを見て読み取り操作のクエリを編集する必要があります。次のようにする必要があります

SELECT  a.idPermission, b.name, a.business_unit_id, a.permission 
FROM TABLE_A AS a 
JOIN TABLE_B(users) AS B ON a.user_id=b.user_id;

json でデータをエンコードしてクライアントに送信

剣道グリッドで列 user_id を name に変更します

于 2013-02-15T14:26:24.503 に答える