2012-08-05 40 views
0

我想使用dojo工具更改每个单独单元格的datagrid背景颜色,但我尝试了几件事情,但找不到正确的解决方案。Dojo 1.7 datagrid根据单元格中的文本更改行颜色

下面的代码被用于创建数据网格

var myStore, dataStore, grid; 
    require([ 
      "dojo/store/JsonRest", 
      "dojo/store/Memory", 
      "dojo/store/Cache", 
      "dojox/grid/DataGrid", 
      "dojo/data/ObjectStore", 
      "dojo/query", 
      "dijit/form/Button", 
      "dojo/domReady!" 
     ], function (JsonRest, Memory, Cache, DataGrid, ObjectStore, query) { 
      myStore = Cache(JsonRest({ target: "/Blog/Action/", idProperty: "Id" }), Memory({ idProperty: "Id" })); 
      grid = new DataGrid({ 
       store: dataStore = ObjectStore({ objectStore: myStore }), 
       // items:dataStore.items, 
       structure: [ 
        { name: "Blog Id", field: "Id", width: "50px", }, 
        { name: "Name", field: "Name", width: "200px",classes:"Name" }, 
        { name: "Phone Number", field: "Phone Number", width: "200px",classes:"test" } 
       ] 
      }, "grid"); // make sure you have a target HTML element with this id 

      grid.startup(); 

      dojo.query("body").addClass("claro"); 

      grid.canSort = function() { return false }; 
     }); 

下面的代码是尝试基于所选值的索引,但什么也没有发生改变颜色,我的意思是没有错误,但它根本不在剧本内部。

<script type="text/javascript" src="dojo/dojo.js" data-dojo-config="parseOnLoad: true"> 
     dojo.connect(grid, 'onStyleRow', this, function (row) { 
     var item = grid.getItem(row.index); 
     if (row.index == 0) { 
      row.customClasses = "highlightRow"; 
      row.customStyles += 'background-color:#FFB93F;'; 
     } 

    }); 
</script> 

回答

0

您的<script>标记内有'src'的代码永远不会运行。参见如何连接模块中拉AMD方式

dojo/_base Documentation这应该工作

<script type="text/javascript" src="dojo/dojo.js" data-dojo-config="async:true, parseOnLoad: true"></script> 

并与电网挂钩

<script type="text/javascript"> 
    require(["dojo/_base/connect"], function(connect) { 
     connect.connect(grid, 'onStyleRow', this, function (row) { 
      var item = grid.getItem(row.index); 
      if (row.index == 0) { 
      row.customClasses = "highlightRow"; 
      row.customStyles += 'background-color:#FFB93F;'; 
      } 
     });  
    }); 
</script> 

如果youre宣布通过标记你的网格,你可以使用这个模式:

<div data-dojo-type="dojox.grid.DataGrid" data-dojo-props="???"> 
    <script type="dojo/method" event="onStyleRow" args="row"> 
     var item = grid.getItem(row.index); 
     if (row.index == 0) { 
      row.customClasses = "highlightRow"; 
      row.customStyles += 'background-color:#FFB93F;'; 
     } else { 
      this.inherited(arguments); 
     } 
    </script> 
</div> 
+0

我已经尝试了上述两个代码,但我得到了一个错误'TypeError:dojo.connect is no ta函数' – user1445109 2012-08-06 13:00:55

+0

注意在dojo/dojo.js加载后关闭'''标记。如果仍然存在,dojo.connect没有定义,要么有自定义数据库,要么忘记拉入连接模块(是内核的缺省部分虽然) – mschr 2012-08-06 14:19:29

+0

我删除了'dojo.dojo.js',我正在使用''并且当我在''内使用dojo.connect时'像这样'

相关问题