2010-01-11 2 views
1

В приложении ASP.NET MVC, использующем в первый раз jqGrid.Показать мои данные в 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 и языки (и многое другое) в классическом текстовом поле, textarea, ... Как я могу использовать «model.List» (IList) для отображения в сетке?

Спасибо,

ответ

1

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

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

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

И тогда jqGrid будет отображать языки в виде строки, разделенных запятыми.

Но я предлагаю вам принять решение (так как это не ясно из Q):

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

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

+0

Показать список. На этой странице есть не только jqGrid, но и некоторые другие элементы управления, такие как dropdown, textarea, ... –

1

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

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

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

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

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

Смежные вопросы