日期格式化程序、左对齐寻呼机和 StockDate 排序的几个问题

Several issues with date formatter, left-aligned pager & StockDate sorting

我在使用 free-jqGrid 时遇到了 3 个不同的问题。 free-jqgrid 版本是 4.9.2。他们是...

1) 由于网页 css 覆盖,jqgrid 分页中的文本左对齐。

2) jqgrid(javascript - 格式器和格式选项)股票日期的格式不正确。 (在 sql 数据库中,我默认将其格式化为 YYYYMMDD)。

3) 股票日期的列排序(如果解决了股票日期格式,它可能会消失。

服务器端数据库脚本是...

                using (var dbReader1 = dbCommand.ExecuteReader())
                {
                    //#if (!dbReader1.HasRows) { throw new Exception("Records do not exists"); }
                    if (dbReader1.HasRows)
                    {
                        var rowCount = 0;

                        while (dbReader1.Read())
                        {
                            var row = new JqGridTemplate1.Row { id = (rowCount + 1) };  //id have to start with 1 cuz jqGrid doesn't start with 0 but 1...
                            row.cell.Add(dbReader1["StockNo"].ToString());
                            row.cell.Add(dbReader1["Vin"].ToString());
                            row.cell.Add(dbReader1["Year"].ToString());
                            row.cell.Add(dbReader1["Make"].ToString());
                            row.cell.Add(dbReader1["Model"].ToString());
                            row.cell.Add(dbReader1["Trim"].ToString());
                            row.cell.Add(string.Format("{0:yyyyMMdd}", DateTime.Parse(dbReader1["StockDate"].ToString())));  //#"{0:MM/dd/yyyy}";
                            returnJqGridTemplate1.rows.Add(row);
                            rowCount++;
                        }
                    }
                }

您永远不应该 post 累积问题,因为这会使问题的索引变得更加困难,因此其他人也很难找到答案。您应该始终在演示中使用 CSS 和 JavaScript 文件的非最小化版本。

您的问题的原因不在您的自定义设置中 CSS zz.css:

<link type="text/css" rel="stylesheet" href="/zzjqgrid/web/1/zz.css" />

具有以下 CSS 规则

table {
    ...
    display: table-cell;
    ...
}

(而不是 display: table;)。这样的全局设置非常糟糕。它破坏了寻呼机的布局,width:100% 不适用于寻呼机 table。您应该删除它或至少设置一些特定的设置 CSS class.

关于日期格式器的问题。我强烈建议您使用 "{0:yyyyMMdd}"。您可以只使用包含分隔符 -Date.ToString("yyyy-MM-dd")。这是标准的 ISO 日期格式。在这种情况下,您应该从 formatoptions 中删除 srcformat

最后的建议:

  • 我建议您使用 height: "auto"
  • ajaxGridOptions 中删除 beforeSenderror 属性并使用 loadBeforeSendloadError 代替
  • 我建议您查看 colModel。应删除所有 index 属性,也应删除 sortable: truesorttype: 'text' 等默认值的属性,应从 colModel 中删除 align: 'center' 等常用设置,以及您应该改用 cmTemplate: {align: 'center'} jqGrid 选项(参见 the old answer)。
  • 您应该永远不要使用 colModelname,其中包含空格 (例如 name: 'Stock Number'name: 'Stock Date')。 jqGrid 使用 name 在网格上生成一些内部元素的 id。 HTML5 不允许在 id.
  • 中使用空格
  • 您应该删除 Webpage_Onload 末尾对 .trigger("reloadGrid") 的多个绝对不需要的调用。
  • 我建议您使用 pager: true 选项并从 navGridnavButtonAdd 中删除带有寻呼机 ID 的参数。我建议您阅读 the wiki article 并使用更短形式的选项 navGrid 并在 jqGrid 的 navOptions 参数中指定选项。
  • 我建议您更改从服务器 return 编辑的 JSON 数据的格式,并更改 colModeljsonmap 属性。您目前在每一列 中使用 属性,例如 jsonmap: function (o) { return o.cell[3]; } 。如果您要对数据格式进行小的更改,则必须修改 colModel 中的所有 jsonmap 属性。顺便说一下,如果使用 loadonce: true,服务器响应的 pagerecordstotal 属性将被忽略。所以一个人可以从服务器中 return 一组项目。