Ошибка с датой YUI - PullRequest
       21

Ошибка с датой YUI

0 голосов
/ 24 февраля 2010

Я пытаюсь собрать приложение, которое использует компонент DataTable YUI, но я получаю сообщение «Ошибка данных». Источник данных настроен на получение записей из веб-метода ASP.NET. Записи возвращаются на клиентскую сторону успешно (я проверил это с помощью отладчика IE). Мой код выглядит следующим образом:

YAHOO.example.Basic = function() {
            var dsWS_Restaurants = new YAHOO.util.DataSource("/DemoWebSite/RestaurantsWebService.asmx/GetList", { connMethodPost: true });

            dsWS_Restaurants.connMgr = YAHOO.util.Connect;
            dsWS_Restaurants.connMgr.initHeader('Content-Type', 'application/json; charset=utf-8', true);
            dsWS_Restaurants.responseType = YAHOO.util.DataSource.TYPE_JSON;

            dsWS_Restaurants.doBeforeParseData =
                function(oRequest, oFullResponse, oCallback) {
                    // checked here if oFullResponse contains the desired results and it does.
                }

            dsWS_Restaurants.responseSchema =
            {
                resultsList: 'd.records',
                fields: ["id", "name"]
            };

            var dsWS_Restaurants_ColumnDefs = [
                { key: "id", sortable: true, resizeable: true },
                { key: "name", sortable: true, resizeable: true }
                ];

            var dsWS_Restaurants_DataTable =
                new YAHOO.widget.DataTable("basic4", dsWS_Restaurants_ColumnDefs, dsWS_Restaurants, { caption: "dsWS_Restaurants" });

            return {
                oDS: dsWS_Restaurants,
                oDT: dsWS_Restaurants_DataTable
            };
        } ();

...

Веб-метод выглядит следующим образом:

public Object GetList() {
    var restaurants =
        new []{
            new
            {
                id="1",
                name="Popeyes spinach"
            },
            new
            {
                id="2",
                name="Big pappas cottage"
            }
        };

    return restaurants.Select (x => new { id = x.id, name = x.name });

}

Любая помощь приветствуется и ценится. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

Я выяснил, что вызвало ошибку. В responseSchema источника данных resultList был определен как «d.records», но у меня не было поля «records», возвращаемого веб-методом. Я заменил «d.records» на «d», и образец сработал. Моя ошибка заключалась в том, что я позаимствовал код из примера приложения из http://mattberseth.com/blog/2008/09/dynamic_data_experimenting_wit.html, в котором использовалось поле «записи».

Счастливого кодирования.

1 голос
/ 25 февраля 2010

Я считаю, что переопределяемый метод doBeforeParseData должен возвращать объект oFullResponse ...

        dsWS_Restaurants.doBeforeParseData =
            function(oRequest, oFullResponse, oCallback) {
                // checked here if oFullResponse contains the desired results and it does.
                 return oFullResponse;
            }

.. но тут может быть что-то большее, чем просто.

...