C# Gridview 难死我了、、、

u010703853 2014-05-14 10:10:57
先看下图:



如何实现以下几个功能:
1. 当达成率低于100% 时, 背景色为黄色, 高于100%为绿色 (图中有几处红色应为黄色,小失误)
2.自动计算每一行,每一列的平均值
3. 用gridview 来获取值,达到图中的那个结果。我在数据库中 存储的数据是这样的: 每个人每天14种工作的达成率 是一条数据,不是图中竖着的,这样我就不会抓值了,我只会抓一行的,可是这样的话,是一个table了 ,怎么来对应字段呢???
4.第一列 和最后一列该怎么显示出来呢、不是在数据库中获取的,行数的话,我就规定是18行。。。

之前想过用table 来显示这个结果,可是要用好多lable,再给每个lable 赋值,还要不停的交互数据库,我感觉麻烦,就先用这个试试。。。。。
求各位神仙帮帮我呀...

...全文
445 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 13 楼 u010703853 的回复:
http://bbs.csdn.net/topics/390728073 http://bbs.csdn.net/topics/390768807 需要接分的同志,可以链接过去, 周末结贴。 到现在那两个帖子还没有人回复,问题还没有解决。。。。不结贴,影响我的结贴率。。。。
引用 14 楼 emperor_yp 的回复:
怎么获得分啊?分要怎么样才能得到啊?~
只要回复 就有分送......
moonwrite 2014-05-15
  • 打赏
  • 举报
回复
搜索一下Gridview 72般绝技
zhujiazhi 2014-05-15
  • 打赏
  • 举报
回复
用jquery来实现应该不是很复杂的, 首先给所有需要变色的td加一个特殊的标记,好方便让jquery去寻找,如添加一个class="cell" 然后用jquery遍历 $("td.cell").each(function() { var html = $(this).html(); html = html.replace(/%/, ""); var f = parseFloat(html); if(f > 100) { $(this).css("background-color", "green"); } else { $(this).css("background-color", "yellow"); } });
  • 打赏
  • 举报
回复
怎么获得分啊?分要怎么样才能得到啊?~
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390728073 http://bbs.csdn.net/topics/390768807 需要接分的同志,可以链接过去, 周末结贴。 到现在那两个帖子还没有人回复,问题还没有解决。。。。不结贴,影响我的结贴率。。。。
信不信由你zzy 2014-05-14
  • 打赏
  • 举报
回复
引用 4 楼 u010703853 的回复:
[quote=引用 1 楼 zengzhengyou 的回复:] js里面实现就好了。
JS怎么写呢? 有例子没有。我模仿下。。。[/quote] <1>js: $("#tableId tr").each(function () {//循环每行 $(this).find("td").each(function () {//循环每列 if(parseFloat($(this).val())>1)//>100%则改变颜色 $(this).css("color",red);//设置颜色 }); }); tableId是GridView的Id 未验证,大体思路这样。 <2>.cs:GridView 有个RowDataBind事件应该也能实现你想要的这种功能
  • 打赏
  • 举报
回复
引用 6 楼 kongwei521 的回复:
1. 当达成率低于100% 时, 背景色为黄色, 高于100%为绿色 (图中有几处红色应为黄色,小失误) 换成 style="background-color:<%#Eavl("成功率")<="100%"?yellow:green%>" 2.自动计算每一行,每一列的平均值 在后台计算 RowDataBound里面 if (e.Row.RowIndex >= 0) { sum += Convert.ToDouble(e.Row.Cells[6].Text); } else if (e.Row.RowType == DataControlRowType.Footer) { e.Row.Cells[5].Text = "综合大成率:"; e.Row.Cells[6].Text = sum.ToString(); e.Row.Cells[3].Text = "平均薪水为:"; e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString(); }
http://blog.csdn.net/21aspnet/article/details/1540301 我也参考这个了,,,可是如何实现第一列的哪些行呢。还有就是怎么获取那么达成率呢,数据库中是以每个人为一条数据,而这个表中是以每个工种来为一条数据的 我很费解。。。。。。3Q
蝶恋花雨 2014-05-14
  • 打赏
  • 举报
回复
1. 当达成率低于100% 时, 背景色为黄色, 高于100%为绿色 (图中有几处红色应为黄色,小失误) 换成 style="background-color:<%#Eavl("成功率")<="100%"?yellow:green%>" 2.自动计算每一行,每一列的平均值 在后台计算 RowDataBound里面 if (e.Row.RowIndex >= 0) { sum += Convert.ToDouble(e.Row.Cells[6].Text); } else if (e.Row.RowType == DataControlRowType.Footer) { e.Row.Cells[5].Text = "综合大成率:"; e.Row.Cells[6].Text = sum.ToString(); e.Row.Cells[3].Text = "平均薪水为:"; e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString(); }
  • 打赏
  • 举报
回复
引用 3 楼 u013384702 的回复:
如果WINFORM的话,有个控件叫C1FLEXGRID可以完成你的需求
我开发的是 webform 页面 第一列怎么编写呢? 一板我都是绑定数据库来获取的值...
  • 打赏
  • 举报
回复
引用 1 楼 zengzhengyou 的回复:
js里面实现就好了。
JS怎么写呢? 有例子没有。我模仿下。。。
猪爷爷 2014-05-14
  • 打赏
  • 举报
回复
如果WINFORM的话,有个控件叫C1FLEXGRID可以完成你的需求
_小黑_ 2014-05-14
  • 打赏
  • 举报
回复
这个 不太好 做 给你 个 大体思路 可以 重绘 dgv 的 列 和行 取到 每一列的值 之后 判断 这个值 之后 在 重绘 这一列的背景颜色
信不信由你zzy 2014-05-14
  • 打赏
  • 举报
回复
js里面实现就好了。
雪狐 2014-05-14
  • 打赏
  • 举报
回复
后台计算拼成DataTable,然后绑定!
修仙之人 2014-05-14
  • 打赏
  • 举报
回复
果断用gridview +JS,用gridview 把数据显示出来后在用JS写验证在着色SO eays

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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