Показать мои данные в jqGrid - PullRequest
1 голос
/ 11 января 2010

В приложении ASP.NET MVC, впервые использующем jqGrid.

У меня есть меню, я называю «сотрудник» из меню на главной странице, например:

<script language="javascript" type="text/javascript">
    $(document).ready(function() {
        $(".mnuEmployee").click(function() {
            $.post("/Employee/Index", null, function(data) {
                $("#text").html(data);
            });
        });
    });
</script>

В контроллере у меня так:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index()
{
    EmployeeModel model = new EmployeeModel();
    model.List =  _employeeService.List();
    model.Languages = _languageService.List();
    return View("Index", model);
}

В представлении (Index.ascx) у меня есть это:

<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery("#sandgrid").jqGrid({
            url: '/Employee/MyGridData/',
            datatype: 'json',
            mtype: 'GET',
            height: 255,
            width: 600,
            colNames: ['Index', 'Name', 'Code'],
            colModel: [
            { name: 'item_id', index: 'item_id', width: 65 },
            { name: 'item', index: 'item', width: 150 },
            { name: 'item_cd', index: 'item_cd', width: 100}],

            pager: jQuery('#sandgridp'),
            rowNum: 10,
            rowList: [5, 10, 20, 50],
            sortname: 'item_id',
            sortorder: "desc",
            viewrecords: true,


            caption: 'Liste des employés'
        });
    }); 
</script>
<table id="sandgrid" cellpadding="0" cellspacing="0"></table>
<div id="sandgridp"  style="text-align:center;"></div>

Проблема в этой последней части (я думаю), у меня есть все данные в моей модели, я хотел бы отобразить список сотрудников в jqGrid и языки (и больше будут) в классическом текстовом поле, текстовое поле, ... Как я могу использовать «model.List» (IList) для отображения в сетке?

Спасибо

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Я немного растерялся. У вас есть jqGrid, настроенный для выполнения AJAX-запроса для его данных в виде JSON, поэтому нет необходимости включать его в модель представления индекса.

url: '/Employee/MyGridData/',
datatype: 'json',

Для использования метода AJAX вашему контроллеру требуется действие MyGridData.

[AcceptVerbs(HttpVerbs.Get)]
public JsonResult MyGridData ()
{
    var list =  _employeeService.List();
    return Json(list);
}

Кроме того, свойства имени и индекса в colModel должны соответствовать именам свойств в вашей модели.

1 голос
/ 11 января 2010

В чем причина показывать языки в текстовом поле / текстовой области?Вы имели в виду выбрать?Если это так, тогда посмотрите на http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules, для выбора типа редактирования "выберите".Обратите внимание, что вы можете иметь список множественного выбора.

Если вы просто хотите отобразить языки, то сделайте это в вашей модели:

model.Languages = string.Join(_languageService.List().Select(x => x.Name).ToArray(), ",");

И тогда jqGrid отобразит ваши языки в виде строки, запятой-separated.

Но я бы посоветовал вам решить (поскольку из Q не ясно):

  • как вы хотите отобразить языки / список
  • хотите ли вы их редактировать и как

Также обратите внимание на пользовательские средства форматирования http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter, вы можете написать функцию для преобразования списка языков во что угодно, при вводе вы получаете данные, на выходе вы возвращаете строку с любым HTML.Не забудьте "unformatter", если вам нужно отредактировать значение ячейки.Например, я использую пользовательский форматер для отображения изображений флажка вместо текста true / false.

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