0

私はこれで一生懸命努力しましたが、成功していません。

私のコントローラーは

public ActionResult CompOff()
        {

            return View();

        }


         [HttpPost]
        public JsonResult CompOff(RegisterCompOff r)
        {
            var compoffs = db.RegisterCompOffs.Where(l => l.Employee.Id == this.EmployeeId).Select(l => new { l.CompOffDate, l.Description, l.ExpiryDate, l.IsApproved, l.IsUtilized }).ToList();
            return Json(compoffs);

        }

私の見解は

<table id="jqgProducts" cellpadding="0" cellspacing="0"></table>
<div id="jqgpProducts" style="text-align:center;"></div>


<script src="@Url.Content("~/Scripts/jquery.jqGrid.min.js")" type="text/javascript"></script>
 <script type="text/javascript">
     $(document).ready(function () {



         $('#jqgProducts').jqGrid({
             //url from wich data should be requested
             url: '@Url.Action("CompOff")',
             //type of data
             datatype: 'json',
             //url access method type

             mtype: 'POST',
             //columns names

             colNames: ['CompOffDate', 'Description', 'ExpiryDate', 'IsApproved', 'IsUtilized'],
             //columns model
             colModel: [
                            { name: 'CompOffDate', index: 'CompOffDate', align: 'left' },
                              { name: 'Description', index: 'Description', align: 'left' },
                            { name: 'ExpiryDate', index: 'ExpiryDate', align: 'left' },
                            { name: 'IsApproved', index: 'IsApproved', align: 'left' },

                            { name: 'IsUtilized', index: 'IsUtilized', align: 'left' }

                          ],
             //pager for grid
             pager: $('#jqgpProducts'),
             //number of rows per page
             rowNum: 10,
             //initial sorting column
             sortname: 'CompOffDate',
             //initial sorting direction
             sortorder: 'asc',
             //we want to display total records count
             viewrecords: true,
             //grid height
             height: '100%'
         });
     });
    </script>

コントローラーの post メソッドで json の結果を取得していますが、そのデータがグリッドにバインドされていません。ローカル データをバインドしようとすると、空のグリッドしか表示されません。これについて私を助けてください

4

1 に答える 1

2

必要なパラメーターを使用して、JSON データを適切な形式で返す必要があります。

たとえば。

return Json(new{
                 total = 1,
                 page = 1,
                 records = collection.Count, // actual data count
                 rows = collection // actual data
              });

totalpage(現在のページ)、recordsおよびを返していませんrows

これを試して..

[HttpPost]
public JsonResult CompOff(RegisterCompOff r)
{
        var compoffs = db.RegisterCompOffs.Where(l => l.Employee.Id == 
        this.EmployeeId).Select(l => new { l.CompOffDate, l.Description, l.ExpiryDate, 
        l.IsApproved, l.IsUtilized }).ToList();

        return Json(new{
            total = 100, // change into actual value
            page = 1, //first page
            records = compoffs.Count(), // no. of records you are returning now
            rows = compoffs // data
        });
}

次の部分をビューに追加します

jsonReader : {
                root: "rows",
                page: "page",
                total: "total",
                records: "records",  
                repeatitems: false,
                cell: "cell",
                id: "id",
                userdata: "userdata",    
               },    

于 2012-06-26T17:04:54.020 に答える