【发布时间】:2014-03-12 13:28:13
【问题描述】:
在使用 Boostrap (3.0) 和 SlickGrid 的应用程序中,我正在尝试将引导程序下拉列表添加到列中。
var columns = [
{id:"rowNumber", name:"", field: "", editor:Slick.Editors.Text, formatter:RowNumberFormatter, behavior:"select", cssClass:"cell-selection", width:40, cannotTriggerInsert:true, resizable:false, unselectable:true, sortable:false},
{id:"A", name:"X", field: "A", editor:Slick.Editors.Text, sortable:false, width:120},
{id:"B", name:"Y", field: "B", readonly:true, width:120,
formatter: linkFormatter = function (row, cell, value, columnDef, dataContext) {
var a =
'<div class="dropdown">' +
' <a class="dropdown-toggle" data-toggle="dropdown" href="#">Action</a>' +
' <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">' +
' <li><a href="#">Item 1</a></li>' +
' <li><a href="#">Item 2</a></li>' +
' <li><a href="#">Item 3</a></li>' +
' <li><a href="#">Item 4</a></li>' +
' </ul>' +
'</div> ';
return a;
}
}
];
但是它不起作用。我的猜测是,应该在格式化程序生成 HTML 之后应用 boostrap 绑定(魔术)。我该怎么做?
这里是一个 jsFiddle 版本:http://jsfiddle.net/kilativ/tEU37/
【问题讨论】:
-
我认为你需要使用 Bootstrap 下拉菜单的 javascript 部分,你设置了它的样式,但我相信它永远不会打开,除非你运行 javascript
$('.dropdown-toggle').dropdown()并且你可能不能把它放在里面虽然你可以在编辑器中使用格式化程序 -
尝试在格式化程序之外调用
$('.dropdown-toggle').dropdown(),但没有成功 -
我还尝试使用 asynPostRender 来动态操作单元格的 DOM,以便我可以应用 html() 或 append() 方法。还是没有运气
-
您是否尝试过按照我的建议创建编辑器?这样做的时间稍长,但它为您提供了更多的灵活性..您可能还会遇到 SlickGrid 样式覆盖任何 Bootstrap 样式的问题,如果是这种情况,您必须找出哪个被覆盖并尝试补偿
-
这需要用户点击两次,不是吗?一次进入编辑模式,另一次点击链接。
标签: twitter-bootstrap slickgrid