0

ここで何が起こっているのかわかりませんが、スキーマを正しく理解していないだけだと思います。さまざまなオプションやスキーマの表現方法を試し、XMLを含むさまざまな形式のWebサービス結果を試しましたが、どれも機能しませんでした。(Fiddler2から)Webサービスが呼び出されてデータを返していること、およびグリッドが前述の列をレンダリングしていることを確認できますが、データが表示されません。ここで何が欠けているのか、Webサービスの結果を修正する必要があるのか​​、スキーマを別の方法で指定する必要があるのか​​、それとも他の何かが必要なのかわかりません。

私のJavascriptは次のようになります...(さまざまなことを試した後、これは現在私が持っているものです)

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link href="../Content/kendo/2012.3.1114/kendo.common.min.css" rel="stylesheet" type="text/css" />
    <link href="../Content/kendo/2012.3.1114/kendo.default.min.css" rel="stylesheet" type="text/css" />
    <script src="../Scripts/jquery-1.9.0.min.js" type="text/javascript"></script>
    <script src="../Scripts/kendo.all.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="grid" style="height: 400px; width: 900px;">
    </div>
    <script type="text/javascript">
        var myWebServiceUrl = 'wMDTData.asmx';

        var myGridData = new kendo.data.DataSource({
            transport: {
                read: {
                    url: myWebServiceUrl + '/Read',
                    dataType: "json",
                    type: "post",
                    contentType: "application/json; charset=utf-8"
                }
            },
            schema: {
                data: function (response) { return response.d; },
                model: {
                    id: "ID",
                    fields: {
                        ID: { type: "string" },
                        ITEM_NAME: { type: "string" },
                        FUNCTION_NM: { type: "string" }
                    }
                }
            }
        });

        myGridData.read();

        var myKendoGridOptions = {
            dataSource: {
                data: myGridData
            }, //end of dataSource: object
            columns: [{
                width: 90,
                field: "ID",
                title: "ID"
            }, {
                width: 90,
                field: "ITEM_NAME",
                title: "Item Name"
            }, {
                width: 100,
                field: "FUNCTION_NM",
                title: "Function Name"
            }]  //end of columns: array
        };

        $(document).ready(
            function () { $("#grid").kendoGrid(myKendoGridOptions); }
        );
    </script>
</body>
</html>

編集:Webサービスの応答を修正しました。現在はJSON文字列ですが、まだ機能していません。私のWebサービスはこれで応答します...

{ "d":
    { "__type": "System.Data.DataTable", "columns": [
        { "name": "ID", "dataType": "Object", "defaultValue": null, "readOnly": false, "isKey": false },
        { "name": "ITEM_NAME", "dataType": "String", "defaultValue": null, "readOnly": false, "isKey": false },
        { "name": "FUNCTION_NM", "dataType": "String", "defaultValue": null, "readOnly": false, "isKey": false }
    ],
        "rows": [
            { "ID": 1, "ITEM_NAME": "VR data to Close Package", "FUNCTION_NM": "CLOSE_PACKAGE_MAP_TO_BC" },
            { "ID": 2, "ITEM_NAME": "Currency Conversion", "FUNCTION_NM": "WV_CURRENCY_CONVERSION" },
            { "ID": 3, "ITEM_NAME": "GL Coding (wMDT Mapping)", "FUNCTION_NM": "GL_MAPPING" }
        ]
    } 
}

調べる要素を指定するためのさまざまな方法を試しました-XPath(string /)、ID列を"ID"に設定しようとしました-これは解析されません。邪悪な醜いXMLを返すようにすることもできますが、グリッドはこれでもうまく機能していません...

    <?xml version="1.0" encoding="utf-8"?>
    <DataTable>
        <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
            <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
                <xs:complexType>
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="Table" msprop:BaseTable.0="WMDT_ACCESS">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="ID" msprop:BaseColumn="ID" msprop:OraDbType="107" type="xs:decimal" minOccurs="0" />
                                    <xs:element name="ITEM_NAME" msprop:BaseColumn="ITEM_NAME" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                                    <xs:element name="FUNCTION_NM" msprop:BaseColumn="FUNCTION_NM" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:schema>
        <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
            <NewDataSet>
                <Table diffgr:id="Table1" msdata:rowOrder="0">
                    <ID>1</ID>
                    <ITEM_NAME>VR data to Close Package</ITEM_NAME>
                    <FUNCTION_NM>CLOSE_PACKAGE_MAP_TO_BC</FUNCTION_NM>
                </Table>
                <Table diffgr:id="Table2" msdata:rowOrder="1">
                    <ID>2</ID>
                    <ITEM_NAME>Currency Conversion</ITEM_NAME>
                    <FUNCTION_NM>WV_CURRENCY_CONVERSION</FUNCTION_NM>
                </Table>
                <Table diffgr:id="Table3" msdata:rowOrder="2">
                    <ID>3</ID>
                    <ITEM_NAME>GL Coding (wMDT Mapping)</ITEM_NAME>
                    <FUNCTION_NM>GL_MAPPING</FUNCTION_NM>
                </Table>
            </NewDataSet>
        </diffgr:diffgram>
    </DataTable>

したがって、ここで質問がある場合は、どの結果を使用する必要があり、その結果をグリッドに適切にバインドする方法を教えてください。

「ディスカッション」タイプの質問を投稿して申し訳ありませんが、これを尋ねる「通常の」フォーラムからブロックされています。

4

1 に答える 1

1

これはわずかに異なりますが、機能します。誰かが理由を説明できますか?私は「うまくいくまでそれをいじる」カーゴカルトプログラミング方法が本当に好きではありません!

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link href="../Content/kendo/2012.3.1114/kendo.common.min.css" rel="stylesheet" type="text/css" />
    <link href="../Content/kendo/2012.3.1114/kendo.default.min.css" rel="stylesheet" type="text/css" />
    <script src="../Scripts/jquery-1.8.2.min.js" type="text/javascript"></script>
    <script src="../Scripts/kendo.all.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="grid" style="height: 400px; width: 900px;">
    </div>
    <script type="text/javascript">
        var myWebServiceUrl = 'wMDTData.asmx';

        var myGridData = new kendo.data.DataSource({
            transport: {
                read: {
                    url: myWebServiceUrl + "/Read",
                    dataType: "json",
                    type: "post",
                    contentType: "application/json; charset=utf-8"
                }
            },
            schema: {
                data: "d"
            }
        });

        myGridData.read();

        $("#grid").kendoGrid({ dataSource: myGridData });
    </script>
</body>
</html>

Webサービスの結果は、以前と同じJSONの結果です。誰かがここで何が起こっているのか説明できますか?「オプション」を元に戻しますが、実際に削除したのはそれだけなので、それが混乱していたようです。

于 2013-03-27T20:59:53.073 に答える