EditGridPanel改变行的颜色

问题描述

我用EXTJS做了一个EditGridPanel,可是每行的颜色都是一个样子,客户不满意,要我做成能根据不能的值设置不同的背景色。我查找了API根本就没有与设置背景色相关的函数或者别的,时间很紧急,任务艰巨,希望有经验的人能给点帮助,感谢感谢

解决方案

http://www.dojochina.com/index.php?q=node/563这个可以参考一下.引用2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 嘿,希望你跟我一样,不愿意只能在grid里看到文字,至少不是单调的,毫无特色的文字。有些人就问了,如果我想改变一下单元格里显示内容,应该怎么办呢?非常不幸的是,ext的作者,伟大的jack早已经想到了,说真的,你没想到的,他都想到了,不只想到了,他还做出来了。唉,这就是区别啊。为啥你就不能动手做些东西呢?就知道向别人要这要那,唉。首先,我宣布,偶们的数据要扩充啦,每个人要加上一个性别字段。var data = [ ['1','male','name1','descn1'], ['2','female','name2','descn2'], ['3','male','name3','descn3'], ['4','female','name4','descn4'], ['5','male','name5','descn5']];男女搭配,干活不累撒。而且现在中国就是男多女少,我就还没对象呢。征婚中,单身女性加(QQ)771490531详谈。你可以试试不改其他的部分,显示的结果是不会改变的,因为原始数据要经过ds的处理才能被grid使用,那么下一步我们就开始修改ds,把性别加进去。var ds = new Ext.data.Store({ proxy: new Ext.data.MemoryProxy(data), reader: new Ext.data.ArrayReader({}, [ {name: 'id'}, {name: 'sex'}, {name: 'name'}, {name: 'descn'} ])});添加了一行{name: 'sex'},把数组的第二列映射为性别。现在grid可以感觉到sex了,嘿嘿。不过grid还显示不了性别这列,因为咱们还没改cm。var cm = new Ext.grid.ColumnModel([ {header:'编号',dataIndex:'id'}, {header:'性别',dataIndex:'sex'}, {header:'名称',dataIndex:'name'}, {header:'描述',dataIndex:'descn'}]);到现在其实都没什么新东西,但是你不觉得光看平板字,很难分出哪个是GG哪个是MM吗?听说过红男绿女没?要是男的都加上红色,女的都变成绿色,那不是清楚多了。就像下面一样。怎么样?是不是效果大不同了。你不会认为很难吧,嗯,确实,如果你对html和css完全搞不明白的话,劝你还是先去学学吧,对自己有信心的往下看。var cm = new Ext.grid.ColumnModel([ {header:'编号',dataIndex:'id'}, {header:'性别',dataIndex:'sex',renderer:function(value){ if (value == 'male') { return "<span style='color:red;font-weight:bold;'>红男</span>"; } else { return "<span style='color:green;font-weight:bold;'>绿女</span>"; } }}, {header:'名称',dataIndex:'name'}, {header:'描述',dataIndex:'descn'}]);别被吓到,这么一大段其实就是判断是男是女,然后配上颜色。你要是觉得乱,也可以这么做。function renderSex(value) { if (value == 'male') { return "<span style='color:red;font-weight:bold;'>红男</span>"; } else { return "<span style='color:green;font-weight:bold;'>绿女</span>"; }}var cm = new Ext.grid.ColumnModel([ {header:'编号',dataIndex:'id'}, {header:'性别',dataIndex:'sex',renderer:renderSex}, {header:'名称',dataIndex:'name'}, {header:'描述',dataIndex:'descn'}]);实际上这个renderer属性至关重要,它的值是一个function,哦,你说不知道js里function可以这么用?那么恭喜你,现在你知道了。renderer会传递个参数进去,咱们grid里看到的,是这个函数的返回值,怎么样,神奇吧?同志们,你们也应该看到了,返回html就可以,是html啊,html里有的东西,你返回什么就显示什么,颜色,链接,图片,按钮,只要你愿意,整个网页都可以返回回去。还有什么做不到的?哦,你不会html,那没辙,回去学吧。咱们先来个图片。function renderSex(value) { if (value == 'male') { return "<span style='color:red;font-weight:bold;'>红男</span><img src='user_male.png' />"; } else { return "<span style='color:green;font-weight:bold;'>绿女</span><img src='user_female.png' />"; }}是不是太简单了,下面咱们来玩点儿高级的。function renderDescn(value, cellmeta, record, rowIndex, columnIndex, store) { var str = "<input type='button' value='查看详细信息' onclick='alert("" + "这个单元格的值是:" + value + "\n" + "这个单元格的配置是:{cellId:" + cellmeta.cellId + ",id:" + cellmeta.id + ",css:" + cellmeta.css + "}\n" + "这个单元格对应行的record是:" + record + ",一行的数据都在里边\n" + "这是第" + rowIndex + "行\n" + "这是第" + columnIndex + "列\n" + "这个表格对应的Ext.data.Store在这里:" + store + ",随便用吧。" + "")'>"; return str;}来看看我们可以在render里用到多少参数: 1. value是当前单元格的值 2. cellmeta里保存的是cellId单元格id,id不知道是干啥的,似乎是列号,css是这个单元格的css样式。 3. record是这行的所有数据,你想要什么,record.data["id"]这样就获得了。 4. rowIndex是行号,不是从头往下数的意思,而是计算了分页以后的结果。 5. columnIndex列号太简单了。 6. store,这个厉害,实际上这个是你构造表格时候传递的ds,也就是说表格里所有的数据,你都可以随便调用,唉,太厉害了。有个同学就问啦:EXT render的参数,是如何得到的呢。因为你讲的那些都是EXT自己内部的。它是如何把这些参数传递给render的呢?这个问题其实比较简单,只是你们想复杂了。既然是函数,就肯定有调用它的地方,你找到GridView.js在里边搜索一下renderer,就会看到调用render的地方,这些参数都是在这里传进去的。好,看看效果吧。剩下的,就是发挥各位聪明才智的时候了,舞台已经搭好,看你如何表演了。html例子,1.x版本在lingo-sample/1.1.1目录下的02-02.html,2.0的版本在lingo-sample/2.0目录下的02-02.html。

时间: 2024-09-24 19:36:49

EditGridPanel改变行的颜色的相关文章

listview-点击 ListView 中的 item,然后改变行的背景颜色

问题描述 点击 ListView 中的 item,然后改变行的背景颜色 我想使用BaseAdapter 在ListView中显示item.我在BaseAdapter使用下面的代码: @Override public View getView(final int position, View convertView, ViewGroup parent) { //... convertView.setOnTouchListener(new OnTouchListener() { @Override

jquery实现单击table行变颜色,点击下一行时当前颜色取消,下一行颜色改变

问题描述 jquery实现单击table行变颜色,点击下一行时当前颜色取消,下一行颜色改变 我的table不是页面一开始就有的,是点击查询后根据结果动态生成的table,然后用$('#gg').html(htmlStr); htmlStr为拼成的table,请问我如何实现点击当前table 行改变颜色, 解决方案 根据Repeater某一列的值,将Repeater控件中的某一行改变颜色改变CListCtrl中某一行的颜色改变DataGrid某一行和单元格的颜色 解决方案二: $('#gg').h

用CSS和表格代码实现每行交替颜色的效果比较

css|比较 用CSS写出表格每行交替颜色的效果 关于用CSS定义,来表现出表格每行不同的颜色,用来区分每行数据,方便阅读.其中有的是利用IE的BUG,在CSS里面添加动态的内容,IE会解析它,这个先不谈,因为和主题没有关系. 还看到几个很简单的方法,利用给不同的标签不同的背景色达到效果,先看这个方法的CSS th {font-weight: normal; text-align:left; background: #CCCCCC} td {background: #FAFAFA} 页面代码 <

PB 在按钮控件中修改DW窗口已经行号的行的颜色

问题描述 PB 在按钮控件中修改DW窗口已经行号的行的颜色 这是按钮控件中的代码DO WHILE i_2<>d_2如何在这里写已知行号(i_2)的行改变背景色 st_sj2=dw_2.GetItemString(i_2s_filename"") //取dw_2窗口第一行的内容 dw_1.ImportFile(""E:jhwj""+st_sj2) d_1=dw_1.rowcount() d_1=d_1+1---- i_2=i_2+1 i

android-Android 改变Editext边框颜色

问题描述 Android 改变Editext边框颜色 Android 改变Editext边框颜色 应该怎么改? 解决方案 我写了shape啊 但是它改变我样式了 出来的是这种效果 解决方案二: 加个背景图片..... 解决方案三: 你设置background,那个线就没色了,如果想自定义边框,可以写一个shape的xml文件,然后background设置为这个文件即可shape参考http://www.cnblogs.com/cyanfei/archive/2012/07/27/2612023.

ios-怎样选择tableview中的某一行,并让他这行变颜色?

问题描述 怎样选择tableview中的某一行,并让他这行变颜色? 同上.我是结合coredata 的,最好说详细点,给点意见参考.怎样实时更新改变后的行. 解决方案 在行选中事件里写 解决方案二: -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView cellForRowAtIndexPath:i

GridView中点击CheckBox选中一行来改变此行的颜色_实用技巧

前台: 复制代码 代码如下: <asp:TemplateField HeaderText="选择"> <ItemStyle HorizontalAlign="Center"/> //居中显示 <ItemTemplate> <asp:CheckBox ID="ckbSelect" runat="server" AutoPostBack="true" onchecked

wince下DataGrid如何给指定行上颜色(C#)

问题描述 wince下DataGrid如何给指定行上颜色(C#)分不多,各位大神帮帮忙啊,弄了好几天了 解决方案 解决方案二:好像不可以设置.给个链接,解决方案三:网上的能找到的都弄过了,还是没玩出来能不能给个例子呢解决方案四:DataGridWiew选中单元格时整个背景变色实例//绑定显示数据privatevoidFrm_Main_Load(objectsender,EventArgse){dgv_Message.DataSource=newList<Fruit>(){//绑定数据集合new

JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色_javascript技巧

表格GridPanel概述       ExtJS中的表格功能非常强大,包括了排序.缓存.拖动.隐藏某一列.自动显示行号.列汇总.单元格编辑等实用功能. 表格由类Ext.grid.GridPanel定义,继承自Panel,其xtype为grid.ExtJS中,表格Grid必须包含列定义信息,并指定表格的数据存储器Store.表格的列信息由类Ext.grid.Column(以前是由Ext.grid.ColumnModel定义).而表格的数据存储器由Ext.data.Store定义,数据存储器根据解