【问题标题】:jqGrid with ASP.NET MVC problem displaying recordsjqGrid 与 ASP.NET MVC 问题显示记录
【发布时间】:2009-07-22 14:04:38
【问题描述】:

我正在使用 Craig Stuntz 关于将 jqGrid 与 ASP.NET MVC 结合使用的文章:搜索和格式化,http://blogs.teamb.com/craigstuntz/2009/04/27/38243/ 使用 HttpFox 我可以看到成功返回的 json 数据,但它不会显示在网格中。显示正常,但没有数据和页码。任何人都可以看到这个问题

$(document).ready(function() {
$("#grid").jqGrid({
    url: '/Grid/DynamicGridData/',
    datatype: 'json',
    mtype: 'GET',
    colNames: ['EnquiryID', 'FirstName', 'Surname', 'PostCode'],
    colModel: [
      { name: 'EnquiryID', index: 'EnquiryID', width: 80, align: 'left' },
      { name: 'FirstName', index: 'FirstName', width: 150, align: 'left' },
      { name: 'Surname', index: 'Surname', width: 150, align: 'left' },
      { name: 'PostCode', index: 'PostCode', width: 150, align: 'left'}],
    pager: jQuery('#pager'),
    rowNum: 10,
    rowList: [5, 10, 20, 50],
    sortname: 'EnquiryID',
    sortorder: "desc",
    viewrecords: true,
    imgpath: '/scripts/themes/steel/images',
    caption: 'My first grid'
});
$("#search").filterGrid("#grid", {
    gridModel: false,
    filterModel: [{
        label: 'Search',
        name: 'search',
        stype: 'text'
        }]

    });

}); 

调用上面的:

  <script language="javascript" type="text/javascript" src="<%= Url.Content          ("~/Scripts/Home.GridDemo.js") %>"></script>

<div id="search"></div>  
<table id="grid" cellpadding="0" cellspacing="0"></table>
<div id="pager"  style="text-align:center;"></div>

【问题讨论】:

  • 1.您在其他地方调用 setGridDefaults 吗?如果有,请出示。如果没有,您需要在我的示例中将 setGridDefaults 中的其他选项添加到对 jqGrid 方法的调用中。 2. 如果这不能解决问题,请出示您的 JSON。
  • 以上是您示例的变体,我可以看到问题出在哪里。谢谢
  • 您应该发布您的解决方案,以便其他人可以解决类似的问题。
  • (作为答案,也就是说,您可以回答自己的问题。)

标签: jquery asp.net-mvc jqgrid


【解决方案1】:

setGridDefaults 需要按照文章中的方式设置:

$(document).ready(function() {
GridDemo.Home.GridDemo.setupGrid($("#grid"), $("#pager"), $("#search"));
});

GridDemo.Home.GridDemo = {
setupGrid: function(grid, pager, search) {
    grid.jqGrid({
    colNames: ['Int', 'String', 'Date'],
        colModel: [
                    { name: 'IntProperty', index: 'IntProperty' },
                    { name: 'StringProperty', index: 'StringProperty' },
                    { name: 'DateProperty', index: 'DateProperty' }, 
                  ],
        pager: pager,
        sortname: 'IntProperty',
        rowNum: 10,
        rowList: [10, 20, 50],
        sortorder: "asc",
        url: "GridDemoData"
    }).navGrid(pager, { edit: false, add: false, del: false, search: false });        
    search.filterGrid("#" + grid.attr("id"), {
        gridModel: false,
        filterModel: [{
            label: 'Search',
            name: 'search',
            stype: 'text'
        }]
    });
}

};

【讨论】:

  • 您可能忘记将重复项设置为 false;无论您是否将其作为默认设置都没有关系。我碰巧走上了同样的路,并且得到了同样的行为。
  • 什么是'setGridDefaults'?我在你的代码中找不到它。是 setupGrid 函数吗?如果是这样,为什么你和 Stuntz 称它为“setGridDefaults”?
【解决方案2】:

我认为构建自己的网格表更容易。这是一个使用交替行颜色的示例,

<table class="results" width="100%" border="0" cellpadding="5">
<thead class="tablehead">
  <tr> 
    <td width="55px"><b>Country</b></td>
    <td width="55px"><b>State</b></td>
    <td width="55px"><b>City</b></td>
    <td width="55px"><b>Town</b></td>
    <td width="55px"><b>Postal</b></td>
  </tr>
</thead>
<tbody>
<% 
    int count = 0;
    foreach (var item in (IEnumerable<MY_RESULTS>)ViewData["My_Results"])
    {
        if (count % 2 == 0) { Response.Write("<tr class='even'>"); } else { Response.Write("<tr class='odd'>"); }   
    %>
            <td><%= Html.Encode(item.Country)%></td>
            <td><%= Html.Encode(item.State)%></td>
            <td><%= Html.Encode(item.City)%></td>
            <td><%= Html.Encode(item.Town)%></td>
            <td><%= Html.Encode(item.Postal)%></td>
        </tr>

    <% count += 1; } %>
</tbody>
</table>

您只需为奇数、偶数和表头背景颜色设置 css 类。

【讨论】:

  • 这大约是 jqGrid 的 0.02%。
  • 我从来没有说过它是替代品,我只是觉得它易于使用和定制..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
相关资源
最近更新 更多