手动覆盖列单元格 left/right 填充不起作用
Manually override column cells left/right padding dont work
演示可在 link remvoed
找到并使用 jqgrid 版本 4.9.2
在那里你会发现我在 https://dealerapp-dev.bookitout.com/Member/Css/jqgrid-v4.9.2/ui.jqgrid-bio-extended.css
中对单独的 CSS 文件进行了 link 引用
在该文件中,我覆盖了 ui.jqgrid.css
中的默认 left/right 填充,将其从 2px
更改为 15px
ui.jqgrid-bio-extended.css
[=18] =]
左侧填充效果很好,但右侧填充被隐藏(或切掉)。
.ui-jqgrid tr.jqgrow > td { padding: 0 15px 0 15px; }
如何让它不被砍掉?
首先可以看到,在 auto-resizing 之后,列的宽度不是最佳的。之所以存在这个问题,是因为在计算最佳大小时使用的 getAutoResizableWidth
方法假设所有行的填充 相同 。存在宽度为 0px 的第一行具有 class jqgfirstrow
而不是其他行中使用的 class jqgrow
数据。要解决此问题,您也应该调整 .ui-jqgrid tr.jqgfirstrow > td
.ui-jqgrid tr.jqgfirstrow > td { padding: 0 15px 0 15px; }
我建议您使用以下更常见的 CSS 规则:
.ui-jqgrid tr.jqgfirstrow > td,
.ui-jqgrid tr.jqgrow > td,
.ui-jqgrid tr.jqgroup > td,
.ui-jqgrid tr.jqfoot > td,
.ui-jqgrid tr.jqfoot > td,
.ui-jqgrid tr.footrow > td {
padding: 0 15px 0 15px;
}
并考虑额外增加列 headers 的填充:
.ui-jqgrid .ui-jqgrid-htable th {
padding: 0 15px 0 15px;
}
.ui-jqgrid .ui-jqgrid-resize-ltr {
margin: -2px -15px -2px 0;
}
关于删掉单元格中的文字,我认为存在padding
的误解。文本不必被截断。我不知道 CSS 是否足够好,但我可以建议您将每个单元格的内容放在 <div>
中,其中有 CSS 属性 overflow: hidden
。它将跟随案例中的内容进行切割。对应代码
$("#" + _jqgridSpreadsheetId).bind("jqGridAfterLoadComplete jqGridAfterAddRow", function () {
$(this).find("tr.jqgrow>td").wrapInner("<div style='overflow: hidden;'></div>");
});
会降低网格的性能,但它会像你想要的那样切断文本。建议在创建网格之前添加代码。仅在您确定代码将在第一次加载网格时起作用的情况下。
最后一句话。您应该添加 jquery-2.0.3.min.map
并在您拥有 jquery-v2.0.3.min.js
的同一文件夹中,因为评论 //@ sourceMappingURL=jquery-2.0.3.min.map
存在于 jquery-v2.0.3.min.js
中。同样,jquery-2.0.3.min.map
通常包含 "sources":["jquery-2.0.3.js"]
,因此您也应该包含 non-compressed 文件 jquery-2.0.3.js
。当前在调试器中加载您的演示会在控制台中产生以下错误消息:
HTTP404: NICHT GEFUNDEN: Der Server hat keine Übereinstimmungen für
den angeforderten URI (Uniform Resource Identifier) gefunden. (XHR):
GET -
https://dealerapp-dev.bookitout.com/Member/Scripts/jquery-v2.0.3/jquery-2.0.3.min.map
演示可在 link remvoed
找到并使用 jqgrid 版本 4.9.2
在那里你会发现我在 https://dealerapp-dev.bookitout.com/Member/Css/jqgrid-v4.9.2/ui.jqgrid-bio-extended.css
中对单独的 CSS 文件进行了 link 引用在该文件中,我覆盖了 ui.jqgrid.css
中的默认 left/right 填充,将其从 2px
更改为 15px
ui.jqgrid-bio-extended.css
[=18] =]
左侧填充效果很好,但右侧填充被隐藏(或切掉)。
.ui-jqgrid tr.jqgrow > td { padding: 0 15px 0 15px; }
如何让它不被砍掉?
首先可以看到,在 auto-resizing 之后,列的宽度不是最佳的。之所以存在这个问题,是因为在计算最佳大小时使用的 getAutoResizableWidth
方法假设所有行的填充 相同 。存在宽度为 0px 的第一行具有 class jqgfirstrow
而不是其他行中使用的 class jqgrow
数据。要解决此问题,您也应该调整 .ui-jqgrid tr.jqgfirstrow > td
.ui-jqgrid tr.jqgfirstrow > td { padding: 0 15px 0 15px; }
我建议您使用以下更常见的 CSS 规则:
.ui-jqgrid tr.jqgfirstrow > td,
.ui-jqgrid tr.jqgrow > td,
.ui-jqgrid tr.jqgroup > td,
.ui-jqgrid tr.jqfoot > td,
.ui-jqgrid tr.jqfoot > td,
.ui-jqgrid tr.footrow > td {
padding: 0 15px 0 15px;
}
并考虑额外增加列 headers 的填充:
.ui-jqgrid .ui-jqgrid-htable th {
padding: 0 15px 0 15px;
}
.ui-jqgrid .ui-jqgrid-resize-ltr {
margin: -2px -15px -2px 0;
}
关于删掉单元格中的文字,我认为存在padding
的误解。文本不必被截断。我不知道 CSS 是否足够好,但我可以建议您将每个单元格的内容放在 <div>
中,其中有 CSS 属性 overflow: hidden
。它将跟随案例中的内容进行切割。对应代码
$("#" + _jqgridSpreadsheetId).bind("jqGridAfterLoadComplete jqGridAfterAddRow", function () {
$(this).find("tr.jqgrow>td").wrapInner("<div style='overflow: hidden;'></div>");
});
会降低网格的性能,但它会像你想要的那样切断文本。建议在创建网格之前添加代码。仅在您确定代码将在第一次加载网格时起作用的情况下。
最后一句话。您应该添加 jquery-2.0.3.min.map
并在您拥有 jquery-v2.0.3.min.js
的同一文件夹中,因为评论 //@ sourceMappingURL=jquery-2.0.3.min.map
存在于 jquery-v2.0.3.min.js
中。同样,jquery-2.0.3.min.map
通常包含 "sources":["jquery-2.0.3.js"]
,因此您也应该包含 non-compressed 文件 jquery-2.0.3.js
。当前在调试器中加载您的演示会在控制台中产生以下错误消息:
HTTP404: NICHT GEFUNDEN: Der Server hat keine Übereinstimmungen für den angeforderten URI (Uniform Resource Identifier) gefunden. (XHR): GET - https://dealerapp-dev.bookitout.com/Member/Scripts/jquery-v2.0.3/jquery-2.0.3.min.map