2016-12-21 8 views
0

Я пытаюсь распечатать данные, поступающие с контроллера в таблицу, но не в состоянии сделать это. Я использую Kendo UI template для печати. Я прилагаю код ниже вместе с ошибкой, которую я получаю.Невозможно распечатать данные в сетке

<div id="example"></div> 

<script> 

     $.ajax(
      { 
       type: 'POST', 
       url: '/default1/KendoDataAjaxHandle/', 
       dataType: 'json', 
       success: function (result) { 


        //Get the external template definition using a jQuery selector 
        var template = kendo.template($("#javascriptTemplate").html()); 

        console.log(result); 
        var data = template(result); //Execute the template 
        $("#example").html(data); //Append the result 

       } 
      }) 

</script> 

<script id="javascriptTemplate" type="text/x-kendo-template"> 

    <table> 
     <thead> 
      <tr> 
       <th>Customer ID</th> 
       <th>Customer name</th> 
       <th>Gender</th> 
      </tr> 
     </thead> 
     <tbody> 
      # for (var i=0; i < result.length; i++){ # 
      <tr> 
       # for (var j=0; j < result[i].length; j++){ # 
       <td> 
        #= result[j] # 
       </td> 
       # } # 
      </tr> 
      # } # 
     </tbody> 
    </table> 

</script> 

Что я делаю в приведенном выше коде вносит АЯКС вызов метода действий и получения результатов в формате JSON. Вот мой метод контроллера:

public ActionResult KendoDataAjaxHandle([DataSourceRequest]DataSourceRequest request) 
     { 
      IQueryable<Customer> products = db.Customers; 
      DataSourceResult result = products.ToDataSourceResult(request); 
      return Json(result, JsonRequestBehavior.AllowGet); 
     } 

ошибка, я получаю на выполнение кода является: результат не определен. Однако при утечке результатов, возвращаемых после вызова ajax, я получаю объект, который имеет все значения.

Как напечатать эти значения, возвращаемые в таблицу? Также, пожалуйста, поправьте меня, если я сделал что-то не так. Заранее спасибо.

ответ

1

Попробуйте изменить имя переменной, указанную внутри шаблона, от «результата» до «данных», так как это использует Kendo в своем коде выполнения шаблона.

Пример: http://dojo.telerik.com/@Stephen/ENUze

Обновленный Пример Показано, как перебирать поля объекта (на основе комментариев): http://dojo.telerik.com/@Stephen/oXOJU

Примечание: это предполагает, что поля перечислены в том порядке, который вы указали в вашем комментарии. Если поля не возвращаются в этом порядке, вам нужно будет добавить код для сопоставления имени поля с индексом столбца, а не только слепого цикла.

Update 2:

Обновленный пример использования точный формат возвращаемых данных:

http://dojo.telerik.com/@Stephen/ipeHec

Примечание: Вы должны иметь дело с CustomerAltID, который в возвращенных данных, но не в стол как-то. Мой пример позволяет удалить его из списка ключей для обработки. Как вы справляетесь с этим, зависит от вас.

+0

Спасибо, что ответ Стивен. Похоже, что ошибка изменилась после «результата» на «данные». Но сейчас я не вижу никаких данных в таблице. Мой возвращенный массив представляет собой пару ключевых значений в качестве CustomerAltID: «IMI-001» CustomerID: 1 CustomerName: «Генри Форд» Пол: «М». Как я могу повторить это. Не могли бы вы показать это в додзё. Спасибо за ваше время. –

+0

Я пробовал с вашим обновленным кодом и по hardcoding значениям, я получаю результат, но когда я пытаюсь получить данные с контроллера, он снова не показывает никаких данных. Это то, что я получаю, когда я console.log (result) 'Object {Data: Array [15], Total: 15, AggregateResults: null, Errors: null}' –

+0

Что находится в массиве [15]? Обычно вы возвращаетесь: {«Данные»: [{«Поле1»: значение1, «Поле2»: значение2 ...}, {«Поле1»: значение1, «поле2»: значение2 ...}, ...] , «Всего» ...} Вы должны написать свой код шаблона так, чтобы он соответствовал схеме возвращаемых данных. –

Смежные вопросы