- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一棵很深的树,对于用户来说很难区分级别。是否可以为每个级别设置自定义 css 类?例如,第一个像 h1 和粗体,第二个粗体...
最佳答案
我发现这个问题很有趣,但我认为可以更好地为树节点使用单独的图标。如果您确实需要设置每行的 CSS 样式,我可以转发到 the answer和 this one 。您只需更改演示中的测试标准即可测试隐藏 level
列的内容。
所以我创建了the demo它演示了如何为每个节点级别设置单独的图标:
首先我应该提到,TreeGrid 支持开箱即用的叶子的单独图标。您只需将 icon
属性添加到发布的数据即可。该属性的值应该是 CSS 类,它将添加到代表图标的 div
中。例如图标:“ui-icon-star”
。图标的标准类是“ui-icon-radio-off”。此外,div 还接收类“ui-icon tree-leaf treeclick”。所以如果你在标准 jQuery UI icons 中找到你需要的图标更改叶子的图标将非常容易。
非叶树节点有两个图标:一个处于折叠形式,另一个处于展开形式。没有简单的方法来更改每个 jqGrid 配置的图标,但您可以通过在 loadComplete
内部编写额外的 JavaScript 代码并考虑 expandNode 的链接(覆盖或子类化)来实现该要求
和 collapseNode
方法,就像我建议的 here .
在演示中,我只是更改了顶级树节点的图标。以同样的方式,您可以更改任何其他级别的图标。您可以在下面找到我的演示中代码中最重要的部分:
var $grid = $("#treegrid"),
orgExpandNode = $.fn.jqGrid.expandNode,
orgCollapseNode = $.fn.jqGrid.collapseNode;
$grid.jqGrid({
....
loadComplete: function (data) {
var item, i, l = data.length || 0;
for (i = 0; i < l; i++) {
item = data[i];
if (!item.isLeaf && (item.level === "0" || item.level === 0)) {
if (item.expanded) {
$("#" + item.id + " div.treeclick")
.removeClass("ui-icon-triangle-1-s")
.addClass("ui-icon-carat-1-s");
} else {
$("#" + item.id + " div.treeclick")
.removeClass("ui-icon-triangle-1-e")
.addClass("ui-icon-carat-1-e");
}
}
}
}
});
$.jgrid.extend({
expandNode: function (rc) {
var ret = orgExpandNode.call(this, rc);
if (!rc.isLeaf && (rc.level === "0" || rc.level === 0)) {
$("#" + rc._id_ + " div.treeclick")
.removeClass("ui-icon-triangle-1-s ui-icon-carat-1-e")
.addClass("ui-icon-carat-1-s");
}
return ret;
},
collapseNode: function (rc) {
var ret = orgCollapseNode.call(this, rc);
if (!rc.isLeaf && (rc.level === "0" || rc.level === 0)) {
$("#" + rc._id_ + " div.treeclick")
.removeClass("ui-icon-triangle-1-e ui-icon-carat-1-s")
.addClass("ui-icon-carat-1-e");
}
return ret;
}
});
已更新:我对树形图标的问题进行了更多思考,并将代码修改为 the new demo .
我认为能够像叶子一样定义树节点的图标会更实用。因为需要指定两个图标,所以可以用逗号分隔折叠和展开图标的类。例如:图标:“ui-icon-carat-1-e,ui-icon-carat-1-s”
。代码可以重写为以下内容:
var $grid = $("#treegrid"),
orgExpandNode = $.fn.jqGrid.expandNode,
orgCollapseNode = $.fn.jqGrid.collapseNode,
changeTreeNodeIcon = function (item) {
var icons, $div, id;
if (!item.isLeaf && typeof item.icon === "string") {
icons = item.icon.split(',');
if (icons.length === 2) {
id = item[this.p.localReader.id] || item[this.p.jsonReader.id];
$div = $("#" + $.jgrid.jqID(id) + " div.treeclick");
if (item.expanded) {
$div.removeClass(icons[0])
.removeClass("ui-icon-triangle-1-s")
.addClass(icons[1]);
} else {
$div.removeClass(icons[1])
.removeClass("ui-icon-triangle-1-e")
.addClass(icons[0]);
}
}
}
};
$grid.jqGrid({
....
loadComplete: function (data) {
var item, i, l = data.length || 0;
for (i = 0; i < l; i++) {
item = data[i];
changeTreeNodeIcon.call(this, item);
}
}
});
$.jgrid.extend({
expandNode: function (rc) {
var ret = orgExpandNode.call(this, rc);
changeTreeNodeIcon.call(this[0], rc);
return ret;
},
collapseNode: function (rc) {
var ret = orgCollapseNode.call(this, rc);
changeTreeNodeIcon.call(this[0], rc);
return ret;
}
});
已更新:我发布了 the feature request和 the pull request它将上述功能添加到 TreeGrid。
关于jquery - jqgrid treegrid 每个树级别的自定义 css 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480708/
对于我的项目,我有一个要求,我必须实现一个复杂的网格结构。网格将有一些具有值/子值层次结构的行,必须像树结构一样显示。我用 SlickGrid 做了一个 POC,但发现网格不如像 DHTMLX 这样的
我需要一种在treegrid的网格列中编辑值的功能。只是将编辑器添加到列的配置中并没有帮助。我正在使用ExtJs4树面板组件。 有任何想法吗? 最佳答案 是的,它存在。 我建议使用最新版本,当前版本为
我使用 Vaadin 创建了一个包含单个 TreeGrid 的简单 Web 应用程序。显示了 TreeGrid,但没有用于展开或折叠根元素(“2010 年”或“2011 年”)的句柄,尽管有子元素。当
我正在试验 jqGrid treegrid 功能。谁能解释为什么“expandNode”方法在此示例中不起作用? (在 Chrome 和 JQ 1.4.2 下测试)。 注意 1:我无法使用任何 展开或
有没有办法向 TreeGrid 添加复选框? (瓦丁8.1) 我尝试使用下面的代码,但是当我选择父节点时,它不会自动选择其所有子节点。 treeGrid.setSelectionMode(Select
我有一个 ExtJS TreeGrid,我正在尝试向特定列添加自定义渲染器。不幸的是它不起作用 - 事件没有被触发,也没有发出警告。我也找不到 TreeGrid 的 API。有没有其他人经历过这种情况
我用谷歌搜索并没有找到任何关于 extjs TreeGrid 的鼠标悬停事件示例的信息。我试过了 exTree.on('mouseover', function(node,event){ al
我需要这样的东西: (我需要 TreeView 和 ListView 方面。即 Hirearchy 和 Columns。) 但是,我在 WPF 中需要它。这是内置的东西,还是我必须自己构建它? 我认为
我有一位来自 Isomorphic 的顾问开始开发一个网络应用程序,并提供一个基础。对于应用程序导航至关重要的树形网格具有按需加载的节点。我需要弄清楚如何更改它以从一开始就加载所有子项。 这是 ds.
我使用 jqGrid 来构建一些大树。现在我想记住cookie中展开和折叠的节点 所以我想捕获展开和折叠事件。我在手册中找不到它 所以我是这样解决的 grid.find("div.treeclick"
如何为 dojox.grid.TreeGrid/LazyTreeGrid 中的某些列设置图标? 在 dijit.Tree 中,我可以重载 getIconClass 方法来完成它。 最佳答案 您可以为此
有没有办法在新的 extjs 小部件 TreeGrid 中包含一个复选框列?将节点属性标记为 false/true 只是不起作用,因为它是用于 TreePanel。 干杯 最佳答案 我修改了 Ext.
我正在创建一个带有树形 GridView 的 JqGrid,jqgrid 实际上“作为表格”工作,但它不能作为树工作我将在下面向您展示我的代码 function doTable1(GridData)
有没有办法在树网格的子级别上应用替代行 css? 目前treePanel viewConfig 上的stripeRows 配置只是使所有内容变成灰色和白色,但是很难区分子行和父行。 理想情况下,我想让
我正在使用 jqgrid treegrid 在 expand 事件上远程加载数据。它正在快速检索数据,但在客户端加载和折叠节点需要时间,它在 IE8 上给出停止脚本错误。在 FF 和 Chrome 上
我喜欢using jqGrid treegrid但我绝对需要一个功能,那就是卡住列。有没有类似品质的产品支持冷冻柱。我知道jqgrid支持常规网格中的卡住列(但不支持树网格) 最佳答案 不是开箱即用的
我正在使用jqwidgets tree grid 我正在尝试根据以下要求为单元格编辑器实现 onchange 监听器 在更改特定行中的单元格值时,它应该对该特定行中的其他单元格进行更改。 到目前为止我
我有这个用例: 我得到了所有客户。 对于每个客户,我都想得到他的收据。 对于每张收据,我想获取所有 ShoppingItems。 从示例中,我可以看到如果我有相同类型的对象层次结构,TreeGrid
我需要在使用文件夹的“+”号伸展树(Splay Tree)节点时获取树节点的子记录。如果任何特定节点没有子节点,“+”号应该消失。这个要求和link中的要求类似。 但这对我来说有些不起作用。仅父节点显
我在设计某个树形网格的样式方面已经走了很长一段路,试图让它看起来不像一个树形网格:D我已经删除了连接线、打开/关闭按钮、图标,只包含文本和缩进。 但是,由于某种原因,当我将鼠标悬停在一行上时,背景仍然
我是一名优秀的程序员,十分优秀!