Заполнение jqGrid из хранимой процедуры + SQL Server 2008 + MVC (без использования модели) - обновлен пример кода для лучшего понимания - PullRequest
0 голосов
/ 23 марта 2012

Я хочу заполнить jqGrid из хранимой процедуры, по следующей ссылке приведен 1 хороший пример, но моя проблема в том, что я не использую модель для извлечения данных, какое-либо РЕШЕНИЕ?

Я используюjqGrid + SQL Server 2008 + ASP.net MVC3 (c #)

Пример заполнения jqGrid хранимой процедурой с моделью

Здесь я даю код, который я используюв настоящее время

КОД ПРОСМОТРА

$(document).ready(function () {
        $('#History').jqGrid({
            //url from wich data should be requested
            url: '@Url.Action("UploadData")?entity=' + getEntity(),

            //type of data
            datatype: 'json',
            //url access method type
            mtype: 'GET',
            //columns names
            colNames: ['ID', 'File','Uploaded', 'By'],
            //columns model
            colModel: [
                            { name: 'ID', index: 'ID', align: 'left', editable: false },
                            { name: 'File', index: 'File', align: 'left', editable: false, formatter: "text", width: '105px' },
                            { name: 'Uploaded', index: 'Uploaded', align: 'left', editable: false, formatter: "text", width: '102px' },
                            { name: 'By', index: 'By', align: 'left', editable: false, formatter: "text", width: '78px' },
                          ],
            //pager for grid
            pager: $('#Historypager'),
            //number of rows per page
            rowNum: 15,
            //initial sorting column
            sortname: 'File',
            //initial sorting direction
            sortorder: 'asc',
            //we want to display total records count
            viewrecords: true,
            //Sets the caption for grid
            caption: 'Upload History',
            //grid height
            height: '100%'

        });

        $('#History').jqGrid('navGrid', '#Historypager', { add: false, del: false, edit: false, search: false });

        $('#History').jqGrid('hideCol', "ID");
        var dialogPosition = $(this).offset();
    });

МЕТОД КОНТРОЛЛЕРА

public JsonResult UploadData(string sidx, string sord, int page, int rows, string entity)
        {
            int pageIndex = Convert.ToInt32(page) - 1;
            int pageSize = rows;
            var entitytype = Request.QueryString["entity"].ToString().Trim();
            var uploadlist = objEntities.Uploads.Where(u => u.TableName == entitytype).ToList().AsQueryable(); // fetches the data from upload table

            int totalRecords = uploadlist.ToList().Count(); // total records in the current table
            int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize); // counts the total no. of pages

            if (sord.Trim().ToLower() == "asc") // fetches data according the sorting order
                uploadlist = uploadlist.OrderBy(x => TypeHelper.GetPropertyValue(x, sidx)).Skip(pageIndex * pageSize).Take(pageSize);
            else
                uploadlist = uploadlist.OrderByDescending(x => TypeHelper.GetPropertyValue(x, sidx)).Skip(pageIndex * pageSize).Take(pageSize);

            // fetches data and sets it in JSON format
            var jsonData = new
            {
                total = totalPages,
                page = page,
                records = totalRecords,
                rows = (from b1 in uploadlist
                        select new
                        {
                            id = b1.ID,
                            cell = new string[] {
                                Convert.ToString(b1.ID),
                                b1.File,
                                Convert.ToString(b1.Uploaded),
                                Convert.ToString(b1.By)
                            }
                        }).ToArray()
            };

            return Json(jsonData, JsonRequestBehavior.AllowGet); // returns the data back to the jqgrid
        }

В этом примере я использовал демонстрацию LINQ, но теперь в новой задаче я должен использовать хранимую процедуру для извлечения данных ...

Ответы [ 2 ]

2 голосов
/ 09 апреля 2012

КОД КОНТРОЛЛЕРА

var uploadlist = SPforData(sidx, sord, page, rows /* , +other parameters */).ToList();
                int totalRecords = 0;
                foreach (var pr in uploadlist)
                {
                    totalRecords = Convert.ToInt32(pr.Total);
                    break;
                } // here I am fetching total number of records that have been returned from SP

        int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize); // counts the total no. of pages

        var jsonData = new
        {
            total = totalPages,
            page = page,
            records = totalRecords,
            rows = (from pr in uploadlist
                    select new
                    {
                        id = pr.ID,
                        cell = new string[] {
                            Convert.ToString(pr.ID),
                            Convert.ToString(pr.Name),
                            Convert.ToString(pr.Age),
                            Convert.ToString(pr.Qualification),
                        }
                    }).ToArray()
        };

        return Json(jsonData, JsonRequestBehavior.AllowGet); // returns the data back to the jqgrid
1 голос
/ 09 апреля 2012

Lib.Web.Mvc

Пример кода здесь: Создайте список JQgridRow

List<JqGridRow> jqgRows = new List<JqGridRow>();

Получите записи из вашего SP

var Rows = GetrecordsfromSP(parameters);

foreach (object[] row in Rows)
{
    jqgRows.Add(new JqGridRow()
    {
        id = row[0].ToString(), //depend on your columns
        cell = new[] {
            row[0].ToString(),
            row[1].ToString(),
            row[2].ToString(),
            row[3].ToString(),
        }
    }
}

var GetData = new
{
total = (int)Math.Ceiling((float)TotalRecs / (float)request.rows),
                page = request.page,
                records = TotalRecs,
                rows = jqgRows.ToArray()

};

return Json(GetData, JsonRequestBehavior.AllowGet);

Надеюсь, что это поможет, обратите внимание на DLL JqgridRow, я думаю, что заменен JqGridRecord, но я не уверен в этом.

Спасибо

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