проблема с jqgrid в jequery в asp.net mvc - PullRequest
1 голос
/ 29 ноября 2010

Я занимаюсь разработкой приложения ASP.NET MVC 2. Я хочу показать список данных объекта. как List<MyObject>. Поэтому я попытался код в действии контроллера как:

[HttpGet]
public ActionResult JsonSalesCollection()
{
    string id = Request.QueryString["id"];

    ViewData["TrustId"] = id;
    Guid id1 = new Guid(id);

    List<TrustContract> contractList = trustContractmang.GetListOfTrustContractByTrustId(id1);
    int pageIndex = 12;
    int pageSize = 20;
    int totalRecords = contractList.Count();
    int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
    string orderBy = string.Format("{0} {1}", "TrustContracId", "desc");

    var jsonData = new
    {
        total = totalPages,
        page = 20,
        records = totalRecords,
        rows = (
            from s in contractList
            select new
            {
                i = s.TrustContracId,
                cell = new string[] {
                    s.TrustContracId.ToString(),
                    s.Trust.TrustName.ToString(),
                    s.ContractStartDate.ToShortDateString(),
                    s.ContractEndDate.ToShortDateString(),
                    s.ContractAmount.ToString(), 
                    s.RecoveredAmount.ToString(),
                    s.IsCompleted.ToString()
                }
            }).ToArray()
    };

    return Json(jsonData);
}

Это работает нормально, также генерирует результат JSON. На странице просмотра я использую скрипт:

var gridimgpath = '/Scripts/jqgrid/themes/redmond/images';

var TrustId = <%= serializer.Serialize(ViewData["TrustId"]) %>;

// use date.js to calculate the values for this month
var gridDataUrl = '/NewTrustContract/JsonSalesCollection?id='+ TrustId;

$("#list").jqGrid({
    url: gridDataUrl,
    datatype: "json",
    mtype: 'GET',

    colNames: ['TrustContracId', 'Trust', 'Contract Start Date',
               'Contract End Date', 'Contract Amount', 'Recovered Amount',
               'Is Completed'],
    colModel: [
        { name: 'TrustContracId', index: 'TrustContracId', width: 50, align: 'left' },
        { name: 'Trust', index: 'Trust', width: 100, align: 'left' },
        { name: 'ContractStartDate', index: 'ContractStartDate', width: 100, align: 'left' },
        { name: 'ContractEndDate', index: 'ContractEndDate', width: 100, align: 'left' },
        { name: 'ContractAmount', index: 'ContractAmount', width: 100, align: 'left' },
        { name: 'RecoveredAmount', index: 'RecoveredAmount', width: 100, align: 'right' },
        { name: 'IsCompleted', index: 'IsCompleted', width: 100, align: 'right' }
    ],
    rowNum: 20,
    rowList: [10, 20, 30],
    imgpath: gridimgpath,
    height: 'auto',
    width: '900',
    pager: jQuery('#pager'),
    sortname: 'TrustContracId',
    viewrecords: true,
    sortorder: "desc",
    caption: "Contract"
});

хорошо, для этого я использовал:

< table id="list" class="scroll" cellpadding="0" cellspacing="0" >< /table > 
< div id="pager" class="scroll" style="text-align:center;" >< /div  >

, чтобы удерживать сетку. Я даже могу видеть пустой вид сетки на странице .aspx. но не появляются данные. Так значит ли это, что мне нужно вручную итерировать данные JSON в jquery. если да, то где я могу получить данные JSON в j запросе. и как это повторить. я знаю, что onli $.each используется для повторных данных. а как получить данные в var? или другое средство для этой функции?

Откуда мне взять краткую документацию jqgrid для чтения?

1 Ответ

0 голосов
/ 29 ноября 2010

Это как-то сделано.Для этого успеха я должен использовать JsonResult вместо ActionResult.также необходимо добавить атрибут [AcceptVerbs(HttpVerbs.Get)] перед определением действия.и в то время как возвращение я использовал

return Json(jsonData,JsonRequestBehavior.AllowGet);

Вот так, теперь он работает нормально.

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