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