FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 15625|回复: 15
打印 上一主题 下一主题

轻松搞定表格行样式与单元格样式,代码由50行减少为10行

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-30 17:46:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
为了给表格的行添加样式,之前我们可是没少费工夫:

1. 首先在页面上放一个 HiddenField,用来保存需要添加样式的行
  1. <f:HiddenField ID="highlightRows" runat="server">
  2. </f:HiddenField>
复制代码


2. 在表格的行绑定事件中,将需要添加样式的行保存下来
  1. protected void Grid1_RowDataBound(object sender, FineUIPro.GridRowEventArgs e)
  2. {
  3.         DataRowView row = e.DataItem as DataRowView;
  4.         if (row != null)
  5.         {
  6.                 int entranceYear = Convert.ToInt32(row["EntranceYear"]);

  7.                 if (entranceYear >= 2006)
  8.                 {
  9.                         highlightRows.Text += e.RowIndex.ToString() + ",";
  10.                 }
  11.         }
  12. }
复制代码

3. 在表格的数据加载完成后,通过JavaScript代码来添加行样式
  1. <f:Grid>
  2.         <Listeners>
  3.                 <f:Listener Event="dataload" Handler="onGridDataLoad" />
  4.         </Listeners>
  5. </f:Grid>
复制代码
  1. <script type="text/javascript">
  2.         var highlightRowsClientID = '<%= highlightRows.ClientID %>';
  3.         var gridClientID = '<%= Grid1.ClientID %>';

  4.         function onGridDataLoad() {
  5.                
  6.                 var highlightRows = F(highlightRowsClientID);
  7.                 var grid = F(gridClientID);

  8.                 // 获取所有的行节点
  9.                 var allRows = grid.getRowEls();
  10.                 allRows.removeClass('highlight');

  11.                 $.each(highlightRows.getValue().split(','), function (index, item) {
  12.                         if (item) {
  13.                                 allRows.eq(item).addClass('highlight');
  14.                         }
  15.                 });

  16.         }
  17. </script>
复制代码

4. 最终效果:




====华丽的分隔线========================================
====华丽的分隔线========================================
====华丽的分隔线========================================
====华丽的分隔线========================================
====华丽的分隔线========================================


现在,和这么复杂的流程来个告别,新版FineUI(专业版)即将对行样式和单元格样式提供默认支持。

来看下新版的做法:

1. 在表格的行绑定事件中,为指定的行添加样式
  1. protected void Grid1_RowDataBound(object sender, FineUIPro.GridRowEventArgs e)
  2. {
  3.         DataRowView row = e.DataItem as DataRowView;
  4.         int entranceYear = Convert.ToInt32(row["EntranceYear"]);

  5.         if (entranceYear >= 2006)
  6.         {
  7.                 e.RowCssClass = "special";
  8.         }
  9. }
复制代码

2. 搞定!效果和之前的一模一样!



是不是很方便?查看在线示例:http://fineui.com/demo_pro/#/demo_pro/grid/grid_rowcssclass.aspx


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
16#
发表于 2016-8-21 10:54:09 | 只看该作者
xueke_xu 发表于 2016-8-3 16:54
这个开源版不能用吗??

不可以的。哎
15#
发表于 2016-8-3 16:54:20 | 只看该作者
这个开源版不能用吗??
14#
发表于 2016-7-4 12:34:45 | 只看该作者
不单纯是达到无JS,更应在开源版上提高速度为目标,用FineUI编程是简单多了,但在调试却是往往一条指令却是有一大堆层层叠叠的Div和CSS来完成,速度上就差了好多了,毕竟专业版,对于我们公司内部使用来说,不会去花钱购买
13#
发表于 2016-6-29 11:58:38 | 只看该作者
sanshi 发表于 2014-10-30 21:51
恩,v1.9.0才会有

都一年了,免费版也该有这个功能了吧
12#
 楼主| 发表于 2014-10-30 21:51:16 | 只看该作者
Tiger 发表于 2014-10-30 21:33
当我迫不及待的试验的时候,发现属性不存在 ,仔细一看,是即将推出  
等…… ...

恩,v1.9.0才会有
11#
发表于 2014-10-30 21:33:13 | 只看该作者
当我迫不及待的试验的时候,发现属性不存在 ,仔细一看,是即将推出  
等……
10#
发表于 2014-10-30 21:20:59 | 只看该作者
三石先生的目标可以设定为  100%无JS 因为我不会写 {:soso_e151:}
9#
 楼主| 发表于 2014-10-30 21:07:26 | 只看该作者
Tiger 发表于 2014-10-30 20:55
正想去提个建议,把底部汇总的也改成纯的服务器端事件来处理,惊奇的发现,现在的版本已经是这个效果啦  哈 ...

这个很久很久之前就是通过服务器代码设置的,这样编码简单,也不容易出错
8#
发表于 2014-10-30 20:55:08 | 只看该作者
正想去提个建议,把底部汇总的也改成纯的服务器端事件来处理,惊奇的发现,现在的版本已经是这个效果啦  哈。太牛了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-12 18:07 , Processed in 0.051139 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表