Gridview 重建表头/单击单元格弹出对话框/改变单元格背景色
整理工作~
完整的代码在GitHub上, 路径:
项目背景:追踪某个issue,并且记录每天的状态。
要求:1、点击日期就能更改,并且用颜色标志不同的状态
2、增加按钮可关闭issue
3、布局要求日期横排放在追踪信息之后
刚拿到这简短干练的需求之后,有点懵,sample图都没有,都凭自己想象了。主要提需求的都是一群完全不懂开发的人,真的是完全、完全、完全不懂!!!怀念在软件公司的日子。。。。。。
大概想了一下,画了张类似下面截图的草图并且根据要求详细地写了一份Specification,一致通过之后,就开始准备写这个功能了。。。。
废话不多说,直接看图和代码吧~
效果图:

前台.aspx 代码比较简短,只绑定了一个不可见的ButtonField, 用于单元格单击事件
后台主要代码片断
重建表头在事件gvData_RowCreated里面
switch (e.Row.RowType)
{
case DataControlRowType.Header:
TableCellCollection tcHeader = e.Row.Cells;
tcHeader.Clear();
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxx.";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "xxxxx";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "Status";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "Remarks";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Text = "Month";
tcHeader.Add(new TableHeaderCell());
tcHeader[].Attributes.Add(");
tcHeader[].Text = "xxxx Data";
break;
}
单击事件代码, 首先需要设置从哪一列开始可单击弹出框,然后在RowDataBound事件中允许单击并弹出框
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton _singleClickButton = (LinkButton)e.Row.Cells[].Controls[];
string _jsSingle = ClientScript.GetPostBackClientHyperlink(_singleClickButton, "");
//add events to each editable cell
for (int columnIndex = _firstEditCellIndex; columnIndex < e.Row.Cells.Count; columnIndex++)
{
//add the column index as the event argument parameter
, columnIndex.ToString());
e.Row.Cells[columnIndex].Attributes["onclick"] = js;
e.Row.Cells[columnIndex].Attributes["style"] += "cursor:pointer;cursor:hand;";
e.Row.Cells[columnIndex].Attributes.Add("onclick", "openWin('" + requestNo + "','" + month + "','" + date + "');");
}
}
改变单元格背景色同样在RowDataBound中
if (date.Contains("P"))
{
date = date.TrimEnd('P');
e.Row.Cells[columnIndex].BackColor = ColorTranslator.FromHtml("#525f6b");
}
if (date.Contains("Y"))
{
date = date.TrimEnd('Y');
e.Row.Cells[columnIndex].BackColor = ColorTranslator.FromHtml("#fac970");
}
if (date.Contains("L"))
{
date = date.TrimEnd('L');
e.Row.Cells[columnIndex].BackColor = ColorTranslator.FromHtml("#15a452");
}
if (date.Contains("R"))
{
date = date.TrimEnd('R');
e.Row.Cells[columnIndex].BackColor = Color.Red;
}
if (date.Contains("B"))
{
date = date.TrimEnd('B');
e.Row.Cells[columnIndex].BackColor = ColorTranslator.FromHtml("#004986");
}
e.Row.Cells[columnIndex].Text = date;
设置Status列为单击可关闭列,代码如下
, .ToString());
e.Row.Cells[].Attributes["onclick"] = editJs;
e.Row.Cells[].Attributes["style"] += "cursor:pointer;cursor:hand;";
].Text == "Ongoing")
e.Row.Cells[].Text = "<img src='../Images/page_white_edit.png'/>";
].Text == "Closed")
e.Row.Cells[].Text = "<img src='../Images/accept-f.png'/>";
e.Row.Cells[].Attributes.Add("onclick", "openCloseWin('" + requestNo + "');");
可能实现的方法不是很好,请多指教~
Gridview 重建表头/单击单元格弹出对话框/改变单元格背景色的更多相关文章
- qtableview 鼠标划过单元格弹出标签显示单元格内容
QStandardItem *item = new QStandardItem(show_content); infoTableModel->setItem(1, 1, item); item- ...
- java selenium (十一) 操作弹出对话框
Web 开发人员通常需要利用JavaScript弹出对话框来给用户一些信息提示, 包括以下几种类型 阅读目录 对话框类型 1. 警告框: 用于提示用户相关信息的验证结果, 错误或警告等 2. 提示框 ...
- dos命令弹出对话框---Msg命令详解
标签: dos批处理对话框 2015-11-12 17:20 497人阅读 评论(0) 收藏 举报 脚本(30) 版权声明:本文为博主原创文章,未经博主允许不得转载. dos命令弹出对话框---Ms ...
- NET使用了UpdatePanel后如何弹出对话框!
原文:NET使用了UpdatePanel后如何弹出对话框! 在ajax中的UpdatePanel弹出对话窗,可以使用: ScriptManager.RegisterStartupScript(Upda ...
- JavaScript中的三种弹出对话框
学习过js的小伙伴会发现,我们在一些实例中用到了alert()方法.prompt()方法.prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的内容,使用这种方法使得页面的交互性 ...
- js弹出对话框的三种方式(转)
原文地址:https://www.jb51.net/article/81376.htm javascript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prom ...
- 02 - Unit06:弹出对话框
弹出对话框 如何实现弹出 //弹出出对话框 $("#can").load("alert/alert_notebook.html"); //显示背景色 $(&qu ...
- [Firefox附加组件]0003.弹出对话框
Firefox中使用面板(panel)模块来显示弹出对话框,面板的内容通过HTML编写.你可以在面板上运行content script,尽管在面板里的脚本无法直接访问插件代码,但是你可以在面板脚本和插 ...
- 10.JAVA之GUI编程弹出对话框Dialog
在上节基础上添加对话框显示错误信息. 代码如下: /*弹出对话框显示错误信息,对话框一般不单独出现,一般依赖于窗体.*/ /*练习-列出指定目录内容*/ import java.awt.Button; ...
随机推荐
- MongoDB的账户与权限管理及在Python与Java中的登陆
本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权 ...
- ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图
ArcGIS API for JavaScript 4.2直接从官网的Sample中学习,API Reference也是从官网翻译理解过来,鉴于网上截稿前还没有人发布过4.2的学习笔记,我就试试吧. ...
- [html] 学习笔记-Canvas使用路径
想要绘制其他图形,需要使用路径,使用路径包含4个步骤,开始创建路径.创建图形的路径.路径创建完成后关闭路径.设定绘制样式,之后就可以调用绘制方法绘制路径了. 1.绘制圆形 <!DOCTYPE h ...
- JS闭包深入理解(理解篇)
看书的时候很是不明白为啥变量老是五,经过认真思考的出一下理解: function box() { var arr = []; for (var i = 0; i < 5; i++) { ...
- mybatis入门-mapper代理原理
原始dao层开发 在我们用mybatis开发了第一个小程序后,相信大家对于dao层的开发其实已经有了一个大概的思路了.其他的配置不用变,将原来的test方法,该为dao的方法,将原来的返回值,直接在d ...
- simple-spa 一个简单的单页应用实例
上两篇文章说过要写一个简单的单页应用例子的, 迟迟没有兑诺, 实在有愧 哈哈.这篇写给小白用户哈. 正好趁今天风和日丽,事情不多, 把从项目里的代码扣取了一下, 整理了一个简单的例子.因为我们生产项目 ...
- 转:微信开发之使用java获取签名signature(贴源码,附工程)
微信开发之使用java获取签名signature(贴源码,附工程) 标签: 微信signature获取签名 2015-12-29 22:15 6954人阅读 评论(3) 收藏 举报 分类: 微信开发 ...
- setTimeout()和setInterval()的用法
JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操作. setTimeout("function& ...
- 半小时C语言题目
每个5分共100分.错选.多选.少选或不选均不得分. .[单选题]一个C程序的执行是从( ) A:本程序的main函数开始,到main函数结束 B:本程序文件的第一个函数开始,到本程序文件的最后一个函 ...
- Thrift入门初探(2)--thrift基础知识详解
昨天总结了thrift的安装和入门实例,Thrift入门初探--thrift安装及java入门实例,今天开始总结一下thrift的相关基础知识. Thrift使用一种中间语言IDL,来进行接口的定义, ...