如果使DataGrid里面的某一行加粗显示?

lzp4881 2008-12-04 02:48:58
下面是一个根据result的值来动态显示datagrid的背景色的例子,谁能帮我改成根据result的值来动态显示datagrid的前景色,也就是文字的颜色或者加粗显示也可以(最好是加粗显示)。

DataGridDrawRowBackground.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" xmlns:local="*" width="400" height="300">
<mx:Script>
<![CDATA[
[Bindable]
private var _record:XML =
<list>
<user name="小明" result="60"></user>
<user name="小红" result="59"></user>
<user name="小白" result="75"></user>
<user name="小黑" result="38"></user>
<user name="小青" result="80"></user>
<user name="小文" result="100"></user>
<user name="小鬼" result="99"></user>
<user name="小东" result="40"></user>
</list>

]]>
</mx:Script>
<local:MyDataGrid dataProvider="{_record.user}" right="5" left="5" top="5" bottom="5">
<local:columns>
<mx:DataGridColumn headerText="姓名" dataField="@name"/>
<mx:DataGridColumn headerText="成绩" dataField="@result"/>
</local:columns>
</local:MyDataGrid>
</mx:Application>


MyDataGrid.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void
{
var list:XMLList = new XMLList(dataProvider)
if(dataIndex < list.length() && list[dataIndex].@result<60)color = 0xFF6600
super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
}
]]>
</mx:Script>
</mx:DataGrid>
...全文
1781 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
MojieOnion 2011-07-25
  • 打赏
  • 举报
回复
我也是设置格式后翻页后相同位置的依然是所设置的格式,请问该问题解决没,O(∩_∩)O谢谢![Quote=引用 11 楼 studentsky 的回复:]

我在DataGrid委托了dgMsg_LoadingRow事件

// 加粗、显示未读已读图标
MsgContentInfo mc = e.Row.DataContext as MsgContentInfo;
if (mc.Read == "未读")
{
……
[/Quote]
studentsky 2011-06-13
  • 打赏
  • 举报
回复

void dgMsg_LoadingRow(object sender, DataGridRowEventArgs e)
{

// 加粗、显示未读已读图标
MsgContentInfo mc = e.Row.DataContext as MsgContentInfo;
if (mc.Read == "未读")
{
e.Row.FontWeight = FontWeights.ExtraBlack;
msgImg.Source = new BitmapImage(new Uri("/MsgCenter.Module;component/Images/unread.png", UriKind.RelativeOrAbsolute));
}
else
{
e.Row.FontWeight = FontWeights.Normal;
msgImg.Source = new BitmapImage(new Uri("/MsgCenter.Module;component/Images/read.png", UriKind.RelativeOrAbsolute));
}
// 行单击显示消息内容
// e.Row.MouseLeftButtonUp += new MouseButtonEventHandler(Row_MouseLeftButtonUp);
}
studentsky 2011-06-10
  • 打赏
  • 举报
回复
我在DataGrid委托了dgMsg_LoadingRow事件

// 加粗、显示未读已读图标
MsgContentInfo mc = e.Row.DataContext as MsgContentInfo;
if (mc.Read == "未读")
{
e.Row.FontWeight = FontWeights.ExtraBlack;
msgImg.Source = new BitmapImage(new Uri("/MsgCenter.Module;component/Images/unread.png", UriKind.RelativeOrAbsolute));
}
else
{
msgImg.Source = new BitmapImage(new Uri("/MsgCenter.Module;component/Images/read.png", UriKind.RelativeOrAbsolute));
}
有一个问题就是翻页后相同位置的信息依旧存在粗体,抛砖引玉了!
studentsky 2011-05-27
  • 打赏
  • 举报
回复
我也有,希望以后有结果了说一声,做人要厚道
feixiangbaoji 2010-06-17
  • 打赏
  • 举报
回复
楼主问题解决了没啊,我也有同样的需求,就是针对后台返回来的结构确定某些字体的样式我的邮箱cqj19840229@126.com,谢谢
a7719665 2010-04-29
  • 打赏
  • 举报
回复
楼主是否可以加Q聊下哦,我的是要控制几条数据一起变色,其中用到了timer控件,所以没那么简单。
我现在碰到的问题是怎样把那三条数据合成一个集合,然后在drawRowBackground()函数外,来执行super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);?楼主可否有解呀?
Helen.Z 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lzp4881 的回复:]
问题已经解决,不过方法有点笨,期待很好的方法。
我的方法是在每一列都用itemRenderer,这样当数据比较多时,肯定会影响性能,希望能有更好的方法。
[/Quote]

可否说得清楚点哈?
lzp4881 2008-12-06
  • 打赏
  • 举报
回复
或者未阅读正常显示,已阅读显示为灰色也可以
lzp4881 2008-12-06
  • 打赏
  • 举报
回复
就是根据后台返回的值来动态改变某一行的显示,比如有个系统消息表,从后台返回的数据有标题、时间、发布者、阅读状态(0表示未阅读,1表示已阅读),如何在绑定到DataGrid里面的时候,根据阅读状态的值来加粗显示这一行。如果未阅读就显示为加粗,如果忆阅读就显示为正常。
象下面这样
标题 时间 发布者 阅读状态
aaa 08-08-02 a1 0
bbb 08-09-09 a2 1
ccc 08-10-11 a3 1
lzp4881 2008-12-06
  • 打赏
  • 举报
回复
问题已经解决,不过方法有点笨,期待很好的方法。
我的方法是在每一列都用itemRenderer,这样当数据比较多时,肯定会影响性能,希望能有更好的方法。
yinhunfeixue 2008-12-06
  • 打赏
  • 举报
回复
关注
lhy198306 2008-12-05
  • 打赏
  • 举报
回复
我最近也在做DataGrid的样式,你有什么需求说明白点!
比如你是想改表头颜色 还是一个单元格颜色 还是一列或一行
lhy198306 2008-12-05
  • 打赏
  • 举报
回复
设置背景色有属性能设的,不用重构DataGrid!
还有,如果想改变文字,在DataGrid单元格里加label不就可以了吗!
改变表头字体:<mx:DataGrid headerStyleName="样式名">
DownloadFilesservicedownload.htm 软件介绍: 版本: V2.0源码版概述: 本程序为通用打印程序,单据、会计凭证、发票清单、报表、任意复杂表格、合并表格如工矿企业合同都可以由系统提供的几个默 认打印对象组合打印。 DataGrid、DataTable、MSHFlexGrid等二维形式全部可以打印。 后期版本将陆续提供XML描述、SQL数据源的打印,并用管理器管理任意多个网格、文本对象、图象等,用户可以随意定义。 功能特点: 增加了:excle模板打印 打印、预览、页面设置对话框 可以指定每个对象是否每页重复打印 可以调整套打 可以每页都显示当前页小计 可以为每页指定打印行数,小于等于0自适应,默认 可以打印装订线,分左装订和上装订,随意选择 打印有效区域矩阵,以在开发中参照 可以指定打印边框,分单边框,加粗单边框、双边框、加粗双边框等等 分页处理 背景颜色打印对象提供: 主标题 副标题 页顶(简单的一行三列打印样式,第一列居左,第三列居右,中间列居中) 网格头(任意行列数,正文网格主体之上的几行几列的标注说明) 网格标题(多层表头,任意合并,适应中国特点) 网格主体(清单、报表等等要打印的数据) 网格底(任意行列数) 页底(简单的一行三列打印样式,第一列居左,第三列居右,中间列居中)

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧