2012-11-22 80 views
0

我是dojo的新手,我正在尝试将一些按钮放入datagrid单元格中。我阅读文档,并成功把一个按钮到使用格式化电网:如何将多个按钮添加到dojo网格单元

{ 
    name: "oper", 
    field: "id", 
    type: dojox.grid.cells._Widget, 
    editable: false, 
    formatter: function(id){ 
     return new Button({ 
      label:"oper", 
      onClick: function(){ 
        oper(id); 
      } 
     }); 
    } 

}

我的问题是如何把两个或两个以上的按钮进入细胞。 Thx非常。

回答

0

在你的格式化功能,创建一个div并在DIV添加所有按钮,返回创建DIV

formatter: function(id){ 
    var result = "<div>" 
    //add all your buttons in the div, you can also apply some styles 

    result += "</div>"; 
} 
1

这是关于道场DataGrid中反复出现的问题。 这里的主要问题是行格式化程序通常返回一个dijit小部件 或一个html。我发现并测试了一个简单的方法来解决这个问题。
1.为您的小部件创建您的div持有人。 E.g var holderDiv = dojo.toDom(“”);
2.动态创建你的wigets例如var editBtn = new dijit.form.Button({...});
var saveBtn = new dijit.form.Button({...});
var deleteBtn = new dijit.form.Button({...});
3.将你的小部件放在持有者div中。
4.返回holder div的innerHtml。

 **Hier is the full code:** 
     function controlBtnsFormatter(data, rowIndex) { 
      var holderDiv = dojo.toDom("<div></div>"); 
      var editBtn = new dijit.form.Button({...}); 
      var saveBtn = new dijit.form.Button({...}); 
      var deleteBtn = new dijit.form.Button({...}); 
      // destroy them on remove 
      editBtn._destroyOnRemove = true; 
      saveBtn._destroyOnRemove = true; 
      deleteBtn._destroyOnRemove = true; 
      // place buttons inside div 
      editBtn.placeAt(holderDiv); 
      saveBtn.placeAt(holderDiv); 
      deleteBtn.placeAt(holderDiv); 

      return holderDiv.innerHTML; 

     } 
0

更好的解决方案是使用dijit.form.Form插件以包围按钮:

  require(['dojo/_base/lang', 'dojo/dom', 'dijit/form/Button', 'dijit/form/Form', 'dojo/domReady!'], 
       function(lang, dom, Button, Form){ 

       function formatter(){ 

        var form = new Form(); 
        var w1 = new Button({ 
         label: "Edit", 
         onClick: function() { 
          alert("Thanks for all the fish. "); 
         } 
        }); 

        var w2 = new Button({ 
         label: "Delete", 
         onClick: function() { 
          alert("Thanks for all the fish 2. "); 
         } 
        }); 

        w1._destroyOnRemove = true; 
        w2._destroyOnRemove = true; 

        w1.placeAt(form); 
        w2.placeAt(form); 

        return form; 
       } ..... 
相关问题