Ошибка разрешения контекстных переменных и схем в сетке jQuery - PullRequest
2 голосов
/ 30 января 2012

Мне нужно использовать сетку jQuery для загрузки данных в mvc3.Но я не могу избавиться от этой ошибки.

enter image description here

Внутри Layout.cshtml

<link type="text/css" href="@Url.Content("~/Content/jquery-ui-titoms.css")" rel="stylesheet" />
<link type="text/css" href="@Url.Content("~/Content/ui.jqgrid.css")" rel="stylesheet" />  

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.16.custom.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-timepicker-addon.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-sliderAccess.js")"></script>

<script type="text/javascript" src="@Url.Content("~/Scripts/grid.locale-en.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.jqGrid.min.js")"></script>  

Внутри Index.cshtml

<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery("#list").jqGrid({
            url: '@Url.Content("~/Device/LoadDevice")',
            datatype: 'json',
            mtype: 'POST',
            colNames: ['LoginID', 'Name', 'Model'],
            colModel: [
          { name: 'LoginID', index: 'LoginID', width: 40, align: 'left' },
          { name: 'Name', index: 'Name', width: 40, align: 'Name' },
          { name: 'Model', index: 'Model', width: 400, align: 'Model'}],
            pager: jQuery('#pager'),
            rowNum: 10,
            rowList: [5, 10, 20, 50],
            sortname: 'Name',
            sortorder: "desc",
            viewrecords: true,
            imgpath: '',
            caption: 'Device list'
        });
    }); 
</script>  
<table id="list" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager" class="scroll" style="text-align:center;"></div>  

Внутри DeviceController

public JsonResult LoadDevice(string sidx, string sord, int page, int rows)
{
    using (Dbase titoms = new Dbase())
    {
        var context = titoms;
        int pageIndex = Convert.ToInt32(page) - 1;
        int pageSize = rows;
        int totalRecords = context.devices.Count();
        int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

        var devices = context.devices.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize);

        var sorted = (from item in devices
                      select new
                      {
                          i = item.DeviceID,
                          cell = new string[] { item.LoginID, item.Name, item.Model }
                      }).ToArray();

        var jsonData = new
        {
            total = totalPages,
            page,
            records = totalRecords,
            rows = sorted
        };
        return Json(jsonData);
    }
}     

Вот предварительный просмотр страницы:

enter image description here

LoginID, Name & Model как string в типе, в то время как DeviceID равен long type.
Я использую платформу сущностей.

Теперь я не могу понять, почему такая ошибка существует, надеюсь, кто-то может помочь .. Большое спасибо.

РЕДАКТИРОВАТЬ

Спасибо НиколасуВаш ответ сработал, но я должен изменить код.Это должно работать сейчас:

        var devices = context.devices.OrderBy("it." + sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize);

        var sorted = (from item in devices
                      select new
                      {
                          i = item.DeviceID,
                          cell = new List<string> { item.LoginID, item.Name, item.Model }
                      }).ToArray();

1 Ответ

2 голосов
/ 30 января 2012

Проблема связана с указанием вашего заказа по критериям во время выполнения.

Вам нужно будет изменить его в соответствии с соглашением

ObjectQuery<Product> productQuery2 =
    productQuery1.OrderBy("it.ProductID");

Итак, ваш запрос будет выглядеть примерно так:

var devices = context.devices.OrderBy("it." + sidx)

см. Этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...