博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gridview 重建表头/单击单元格弹出对话框/改变单元格背景色
阅读量:5299 次
发布时间:2019-06-14

本文共 4924 字,大约阅读时间需要 16 分钟。

整理工作~

完整的代码在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[0].Text = "xxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[1].Text = "xxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[2].Text = "xxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[3].Text = "xxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[4].Text = "xxxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[5].Text = "xxxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[6].Text = "xxxx.";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[7].Text = "xxxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[8].Text = "xxxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[9].Text = "xxxxx";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[10].Text = "Status";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[11].Text = "Remarks";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[12].Text = "Month";                    tcHeader.Add(new TableHeaderCell());                    tcHeader[13].Attributes.Add("colspan", "31");                    tcHeader[13].Text = "xxxx Data";                    break;            }

单击事件代码, 首先需要设置从哪一列开始可单击弹出框,然后在RowDataBound事件中允许单击并弹出框

if (e.Row.RowType == DataControlRowType.DataRow)            {                LinkButton _singleClickButton = (LinkButton)e.Row.Cells[0].Controls[0];                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                    string js = _jsSingle.Insert(_jsSingle.Length - 2, 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列为单击可关闭列,代码如下

string editJs = _jsSingle.Insert(_jsSingle.Length - 2, 11.ToString());   e.Row.Cells[11].Attributes["onclick"] = editJs;   e.Row.Cells[11].Attributes["style"] += "cursor:pointer;cursor:hand;";   if (e.Row.Cells[11].Text == "Ongoing")      e.Row.Cells[11].Text = "";   if (e.Row.Cells[11].Text == "Closed")      e.Row.Cells[11].Text = "";   e.Row.Cells[11].Attributes.Add("onclick", "openCloseWin('" + requestNo + "');");

可能实现的方法不是很好,请多指教~

 

转载于:https://www.cnblogs.com/Paira7/p/6555127.html

你可能感兴趣的文章
MVC,MVP 和 MVVM 的图示,区别
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
BootStrap2学习日记2--将固定布局换成响应式布局
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
数据库的高级查询
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>
201521123044 《Java程序设计》第1周学习总结
查看>>