在jqGrid中显示我的数据

时间:2010-01-11 07:25:59

标签: asp.net-mvc json jqgrid

在第一次使用jqGrid的ASP.NET MVC应用程序中。

我有一个菜单,我从主页面的菜单中调用“employee”,如下所示:

<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);
}

在View(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)在网格中显示?

谢谢,

2 个答案:

答案 0 :(得分:1)

在textbox / textarea中显示语言的原因是什么?你的意思是选择吗?如果是,请查看http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules,以获取“选择”编辑类型。请注意,您可以使用多选列表。

如果您只想显示语言,请在模型中执行此操作:

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

然后jqGrid会将您的语言显示为逗号分隔的字符串。

但我建议你决定(因为从Q中不清楚):

  • 您希望如何显示语言/列表
  • 你想编辑它们以及如何

另外看一下自定义格式化程序http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter,您可以编写一个函数将您的语言列表转换为您想要的任何内容,输入您获取数据,输出时返回任何HTML字符串。如果您需要编辑单元格值,请不要忘记“unformatter”。例如,我使用自定义格式化程序来显示复选框图像而不是真/假文本。

答案 1 :(得分: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中的名称和索引属性必须与模型中的属性名称匹配。