Как передать параметры в HttpHandler с помощью интерфейса Kendo? - PullRequest
2 голосов
/ 08 февраля 2012

Я очень хорошо знаком с jQuery AJAX и использую его постоянно.Пользовательский интерфейс Kendo построен на основе jQuery и его использования AJAX.Взаимодействие с & передачей параметров в HttpHandler легко с помощью jQuery, вы просто делаете следующее:

ИСПОЛЬЗОВАНИЕ JQUERY AJAX:

$.ajax({
    complete: self.onComplete,
    data: { SiteId: 777 },  // <--- this gets appended to the post
    dataType: 'json',
    error: self.onError,
    success: self.onSuccess,
    url: self.url
});

МОЙ ВЫПУСК: Я пытаюсь найти эквивалентный вызов KendoUI для data (выше).

  • В то время как сетка ДОЛЖНА заполняться данными, переданными мне из HttpHandler
  • Параметрыне передается в HttpHandler (см. ниже)

КОД КЕНДО СМОТРИТ, КАК:

    <script type="text/javascript">

        $(document).ready(function () {

            var dataSource = new kendo.data.DataSource({
                transport:
                    {
                        read: {
                            url: "Handlers/Attempt1Synch.ashx",
                            dataType: "json",
                            contentType: "application/json; charset=utf-8",
                            type: "POST",
                            data: { SiteId: 777 }
                        }
//                        parameterMap: function (data, operation) {
//                            return JSON.stringify(data);
//                        }
                    },
                schema: { data: "People" }
            });

            $("#grid").kendoGrid({
                height: 360,
                width: 500,
                dataSource: dataSource,
                groupable: true,
                scrollable: true,
                sortable: true,
                pageable: true,
                columns:
                [{
                    field: "Id",
                    width: 0
                },
                 {
                     field: "FirstName",
                     width: 90,
                     title: "First Name"
                 },
                {
                    field: "LastName",
                    width: 90,
                    title: "Last Name"
                },
                {
                    width: 100,
                    field: "City"
                },
                {
                    field: "Title"
                },
                {
                    field: "BirthDate",
                    title: "Birth Date",
                    template: '#= kendo.toString(BirthDate,"dd MMMM yyyy") #'
                },
                {
                    width: 50,
                    field: "Age"
                }]
            });
        });
    </script>

    <div id="grid">
    </div>

МОЙ HTTP HANDLER СМОТРЕТЬ, КАК:

public class Attempt1Synch : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        var siteId = Convert.ToInt32(context.Request["SiteId"]);

        var serializer = new JavaScriptSerializer();
        var response = mock(siteId);

        context.Response.ContentType = "text/json";
        context.Response.Write(serializer.Serialize(response));
        context.Response.End();
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

1 Ответ

3 голосов
/ 08 февраля 2012

Я пришел узнать, что это была известная проблема в их предыдущей сборке. В новейшей версии исправлено это . Таким образом, вы должны ПЕРВЫЙ загрузить последнюю версию KendoUI, как показано ниже:

V1 2011 SP1 (версия 2011.3.1407) - февраль 2012
- см. «OData не передает определенные пользователем параметры»

Однако есть также проблема с кодом выше. Код должен опустить команду POST в целом.

НОВЫЙ ИСТОЧНИК ДАННЫХ ДОЛЖЕН СМОТРЕТЬ КАК:
Только объект DataSource неверен. Новый должен выглядеть так -

var dataSource = new kendo.data.DataSource({                 
    transport:                     
    {                         
        read: 
        {
            url: "Handlers/Attempt1Synch.ashx",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: { SiteId: 777 }
        },
        schema: { data: "People" }             
});
...