GridView列值绑定
需求是这样的,估计大家都会遇到这样的情况:
从数据库中所取得的值绑定在gridview中,有些值取出的是数值,而要把他变成文字。
比如说:
0 跟单员
1 为采购员
2 为审单员
3.为管理员
在gridview中,如果没有对值在业务层进行判断而直接绑定数据的话,就会出现值显示为数字,如图
大家可以看到在厂别及角色中所显示的都是数值,如何可以把他对应成我要的文字呢?
我首先在网上搜索了一下,大家都是采用了两种方法:
一种是:在数据库中做手脚,利用 Case..........When
CASE语句的两种格式:
语法格式为:
case <单值表达式>
when <表达式值> then <SQL语句或者返回值>
when <表达式值> then <SQL语句或者返回值>
...
when <表达式值> then <SQL语句或者返回值>
end
Example
SELECT
(CASE RoleValueID
WHEN 01 THEN '跟单员'
WHEN 02 THEN '采购员'
WHEN 03 THEN '审核员'
WHEN 04 THEN '管理员'
ELSE '非人类动物'
END) AS RoleName
FROM UserRole
这种方法很常用,对程序也不会造成很大影响,可是如果在程序上的实体层所对应构造函数的数据类型不是字符类型的话(一般往往可能是int),那这里就会出现数据类型不对应的问题。
另一种方法:
使用gridview中的模板配合gridview中的相关事件
<asp:Button ID= "Button2 " runat= "server " CommandArgument= ' <%# Eval( "id ") %> ' CommandName= "IsPass " Text= ' <%# Eval( "ispass ").ToString() == "1 " ? "已审 " : "未审 " %> '
/> //指定CommandArgument值为id
e.CommandArgument 就是获取当前点击按钮对应数据的ID
(此代码来自于
tp://topic.csdn.net/u/20070527/19/ae100b46-13d2-47af-8908-93d8ec91f263.html)
第三种方法还可以用javascript来获取,这个方法我不会
而我现在用的方法是在RowDataBound事件中作动作,大家都知这个事件很好使,可以在这里作一下gridview的样式改变等,现在我是这样使用它的:
if (e.Row.RowType == DataControlRowType.DataRow)
{
switch (e.Row.Cells[3].Text.Trim())
{
case "0":
e.Row.Cells[3].Text = "跟单员";
break;
case "1":
e.Row.Cells[3].Text = "采购员";
break;
}
switch (e.Row.Cells[2].Text.Trim())
{
case "1":
e.Row.Cells[2].Text = "制造一厂";
break;
case "2":
e.Row.Cells[2].Text = "制造二厂";
break;
}
}
大家看一下对比一下结果:
运行后:
运行前:
这样就达到我想要的效果了,当然至于这个能不能运用于数据操作,我没试过(我这里只要表现层达到我想要的效果就可以了)
利用RowDataBound还可以改变gridview很多东西
1.实现字体颜色改变
前台用超链接列
<asp:HyperLinkField DataNavigateUrlFormatString="Detail.aspx" Text="点击查看">
</asp:HyperLinkField>
后台:
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink hlf = (HyperLink)e.Row.Cells[1].Controls[0];
if (Convert.ToDateTime(gridview1.DataKeys[e.Row.RowIndex].Value.ToString()) > = DateTime.Now)
{
hlf.ForeColor= System.Drawing.Color.Red;// change color
}
}
}
2.判断特定条件,更改单元格背景颜色
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
...{ //数据加载时发生
if (e.Row.RowType == DataControlRowType.DataRow)
...{ //判断是否是数据行
if (e.Row.Cells[8].Text == "USA")
...{ //判断第9列值是否为"USA"
//e.Row.BackColor = System.Drawing.Color.Red;
e.Row.Cells[8].BackColor = System.Drawing.Color.Red;
}
}
}
3.父窗体中调用子窗体的gridview(此代码来源于:http://blog.csdn.net/mingzhecode/archive/2007/10/08/1814546.aspx)
在父窗体中调用子窗体的gridview值(简单的页面交互):
父窗体代码:
注:单机事件用window.open打开新窗体并获得焦点<head>
<script language=javascript>...
function openpage(htmlurl)
...{
var newwin=window.open(htmlurl,"newWin","toolbar=no,location=no,directories=no,status=no,scrollbars=yes,menubar=no,resizable=yes,top=100,left=200,width=650,height=300");
newwin.focus();
return false;
}
</script>
</head>
<body>
<input type=text id="name" />
在按钮中调用:
<input type=button value="调用" οnclick="return openpage('GridViewClientClick.aspx');" />
</body>
子窗体代码:
注:girdview中e.Row.Attributes增加单击属性,ReKey并将此行第三列的值传过去 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
...{
if(e.Row.RowType==DataControlRowType.DataRow)
...{
e.Row.Attributes.Add("ondblclick", "ReKey('" + e.Row.Cells[2].Text+"')");
//e.Row.Attributes["style"] = "Cursor:hand";
// //键盘事件
//e.Row.Attributes.Add("OnKeyDown", "GridViewItemKeyDownEvent('" + e.Row.Cells[1].Text + "')");
}
}
转载于:https://www.cnblogs.com/duwamish/archive/2009/05/15/1457562.html
GridView列值绑定相关推荐
- ssas 为绑定指定的大小太小,导致一个或多个列值被截断
错误信息:ssas 为绑定指定的大小太小,导致一个或多个列值被截断 如果更改了某个维度或是事实表的字段长度,在处理CUBE时提示此错误,我们要做以下更新: 1.刷新数据源视图. 2.打开多维数据集,查 ...
- 获取GridView隐藏列值
经过试验是不是成功的!! 对于想隐藏GridView列时,大家一定现想到visible属性及Visible = false的时候,但是这样就会发现,我们无法去到该列的值,下面介绍一种方法,及通过 Da ...
- WPF系列:GridView列绑定控件(一)
最近,在WPF方面的UI设计,设计很多控件的绑定和布局,因为刚开始学习,所以,有很多东西不是很懂,一边在网上搜,一边试着做,因为设计到在GridView中绑定控件,所有,在网上搜了搜,看了一篇很好的帖 ...
- VS2015中DataGridView的DataGridViewComBoboxCell列值无效及数据绑定错误的解决方法
在VS2015中练习DataGridView的使用, 发现其中的DataGridViewComBoboxCell列存在着绑定数据库列后出现值无效的提示 根据网上的解决办法,添加了DataError后可 ...
- 如何基于列值从DataFrame中选择行?
本文翻译自:How to select rows from a DataFrame based on column values? How to select rows from a DataFram ...
- python中where函数_如何在python中基于Where函数获取两列值
问题是: 基于user_id列,我想得到rating和{}列的值.可能有多个条目具有相同的用户标识.我希望获取具有rating和product_id列值的所有用户记录,但对于用户未对电影进行评级的电影 ...
- python数据框 命名_Python-根据列值将数据框分为多个数据框,并用这些值命名 - python...
我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品.我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧分成几个其他区域,以便我可以分别处理每个数据帧-例如根据价格对每个地区的 ...
- 文本的DES加密 MD5散列值 DSA的数字签名
作者:未知 文本的DES加密 为了对称加密的安全,将密码进行封装,先新建一个用于保存密码的类库cl: using System; using System.Text ; namespace cl { ...
- pandas计算dataframe两列数据值相等的行号、取出DataFrame中两列值相等的行号
pandas计算dataframe两列数据值相等的行号.取出DataFrame中两列值相等的行号 目录 pandas计算dataframe两列数据值相等的行号.取出DataFrame中两列值相等的行号
最新文章
- 开发日记-20190815 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 23
- 安装Fedora 15后需做的25件事情(转51cto)
- fpga电平约束有什么作用_FPGA时序约束有什么样的作用
- JavaScript——易班优课YOOC课群在线测试答案隐藏解决方案
- 如何保持连接_工高连城 | 连接器连接失效的原因有哪些
- 2019无盘游戏服务器128g内存,云更新无盘客户端 v2019.8.15.12486官方版
- 白板机器学习笔记 P9-P12线性回归
- 鲇鱼效应”也有副作用
- UML中依赖(Dependency)和关联(Association)之间的区别
- 飞行管理计算机在ATA章节,民航ATA章节中英文对照.docx
- ibm x3850 x5连接存储后,linux操作系统无法正常启动,《七小服公开课》— IBM X3850 X5服务器无法开机故障 处理步骤...
- 关于html5毕业论文设计任务书,毕业论文设计任务书(精选多篇)
- 《Redis视频教程》(p5)
- Beyond 预训练语言模型,NLP还需要什么样的知识?
- windows10在python环境下pip install安装模块方法(matplotlib、scipy、Pillow)
- 8b/10b编码方式(详细)总结附实例快速理解
- SQL笔试题(持续更新)
- java i18n 国际化_springboot-i18n国际化
- rv1126 rkmedia调试
- Kafka 再均衡监听器示例
热门文章
- for循环中new的对象什么时候被回收_你真的了解JS里的 new 吗?
- ms17-010 php版本,那年MS17-010
- 仪表自定义刻度值_史上最全的仪表选型,就差你还没看了
- php post登录跳转,php实现post跳转
- BZOJ-2440-完全平方数-中山市选2011-容斥原理-莫比乌斯函数-二分查找
- hust1343(贪吃蛇模拟)
- c语言主范式与编码,超详细!终于搞明白KMP算法
- python中的数据类型有哪些是可阅读,Python中典型的数据类型中哪个只能阅读不能修改...
- overleaf服务端_部署私有在线Latex编辑器:Overleaf/sharelatex,写毕设神器
- 已阻止网站自动通话怎么回事_如何实现百度快速收录网站与快速排名