ASP.NET中Gridview一些技巧
ASP.NET中Gridview一些技巧
一、后台覆盖掉Gridview中自动填充的值
我们可以再Gridview中的事件触发的过程中修改其中的值,而这些值将会在具体的运行过程中覆盖掉那些自动属性。这样我们就可以快捷高效的使用VS中的Gridview控件的同时,又增加一定的自主性和可操作性。
例如:
ItemInserting事件:数据在插入数据库之前会触发这个事件。
如果主键是Guid类型的,就可以在此事件内处理:生成一个Guid数据,然后赋值给e.Values[“Id”].
protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
{
//e.Values["Sex"] = "男"; //在插入数据库之前,把性别改为男。则无论输入什么,最终都会是男”
//e.Values["Sex"]就是即将要插入的性别字段的值。
}
二、善用GridView控件的HyperLinkField数据行
在使用GridView的时候,我们往往希望添加一列超链接,用来定位到一个与该行某列数据相关的操作页面。事实上GridView中的HyperLinkField为我们提供了便捷的操作。注意其中的DataTextFiele是用来绑定选定字段,以显示在表中。而DataNavigateUrlForri则是该项的链接地址,其中的URL传值的绑定项便是上方的DataNavigateUrlied中绑定字段的值。数据中的最后一个属性DataTextFormatString我们下面会提到。

三、GridView中编辑列下数据中的DataTextFormatString
DataTextFormatString很少使用到,单是极大的方便了我们对数据项格式的控制,下面将列举一些该属性对格式控制的具体样例:
该部分转载至:http://blog.csdn.net/ggj00006/article/details/6583849
|
DataTextFormatString="{0:Axx}" 用來取得或設定文字型別的資料該如何顯示 A 為格式字元 xx 是指數字位數或小數點位數,如果沒有指定小數點的位數,大部份格式的預設值為2,超過的位數會自動四捨五入。 |
|
|
格式字元
|
說明
|
|
C
|
將數值顯示為貨幣格式。 |
|
D
|
將數值顯示為十進位格式。 |
|
E
|
將數值顯示為科學格式。 |
|
F
|
將數值顯示為固定科學格式。 |
|
G
|
將數值顯示為一般格式。 |
|
N
|
將數值顯示為數字格式。 |
|
X
|
將數值顯示為十六進位格式。 |
|
例子:
|
||
|
範例值
|
格式
|
套用結果
|
|
12345.6789
|
"{0:C}"
|
$12,345.68 |
|
-12345.6789
|
"{0:C}"
|
($12,345.68) |
|
12345
|
"{0:D8}"
|
00012345 |
|
12345.6789
|
"{0:E}"
|
1234568E+004 |
|
12345.6789
|
"{0:F}"
|
12345.68 |
|
12345.6789
|
"{0:F0}"
|
12346 |
|
12345.6789
|
"{0:G}"
|
12345.6789 |
|
123456789
|
"{0:N4}"
|
123,456,789.0000 |
|
DataTextFormatString="{0:A}" 用來取得或設定日期時間型別的資料該如何顯示 A 為格式字元 |
||
|
範例值
|
格式
|
套用結果
|
|
2006/1/20
|
"{0:d}"
|
2006/1/20 |
|
2006/1/20
|
"{0:D}"
|
2006年1月20日 |
|
2006/1/20
|
"{0:f}"
|
2006年1月20日 上午 12:00 |
|
2006/1/20
|
"{0:F}"
|
2006年1月20日 上午 12:00:00 |
|
2006/1/20
|
"{0:g}"
|
2006/1/20 上午 12:00 |
|
2006/1/20
|
"{0:G}"
|
2006/1/20 上午 12:00:00 |
|
2006/1/20
|
"{0:m}" 或 "{0:M}"
|
1月20日 |
|
2006/1/20
|
"{0:r}" 或 "{0:R}"
|
Fri, 20 Jan 2006 0:00:00 GMT |
|
2006/1/20
|
"{0:s}"
|
2006-01-20T00:00:00 |
|
2006/1/20
|
"{0:t}"
|
上午 12:00 |
|
2006/1/20
|
"{0:T}"
|
上午 12:00:00 |
|
2006/1/20
|
"{0:u}"
|
2006-01-20 00:00:00Z |
|
2006/1/20
|
"{0:U}"
|
2006年1月20日 下午 04:00:00 |
|
2006/1/20
|
"{0:y}" 或 "{0:Y}"
|
2006年1月 |
|
DataTextFormatString="{0:xxxx}" 用來指定日期時間型別的資料該如何顯示 xxxx 為日期時間的顯示格式,格式字元會區份大小寫 |
|
|
格式字元
|
說明
|
|
d
|
以數字顯示日期,如果日期只有個位數,十位數不會補上0。 |
|
dd
|
以數字顯示日期,如果日期只有個位數,十位數會補上0。 |
|
ddd
|
顯示該日期為星期幾,英文系統會顯示星期縮寫。 |
|
dddd
|
顯示該日期為星期幾,英文系統會顯示星期全名。 |
|
M
|
以數字顯示月份,如果月份只有個位數,十位數不會補上0。 |
|
MM
|
以數字顯示月份,如果月份只有個位數,十位數會補上0。 |
|
MMM
|
顯示月份名稱,英文系統會顯示月份縮寫。 |
|
MMMM
|
顯示月份名稱,英文系統會顯示月份全名。 |
|
yy
|
以兩位數顯示西元年,例如2006年會顯示06。 |
|
yyyy
|
以四位數顯示西元年,例如2006年會顯示2006。 |
|
h
|
以數字顯示小時,如果小時只有個位數,十位數不會補上0。 |
|
hh
|
以數字顯示小時,如果小時只有個位數,十位數會補上0。 |
|
m
|
以數字顯示分鐘,如果分鐘只有個位數,十位數不會補上0。 |
|
mm
|
以數字顯示分鐘,如果分鐘只有個位數,十位數會補上0。 |
|
s
|
以數字顯示秒數,如果秒數只有個位數,十位數不會補上0。 |
|
ss
|
以數字顯示秒數,如果秒數只有個位數,十位數會補上0。 |
|
tttt
|
顯示上午或下午 |
|
其它符號
|
指定任何符號即可顯示該符號,通常;符號為時間分隔符號,/符號為日期分隔符號。 |
|
例子:
|
||
|
範例值
|
格式
|
套用結果
|
|
2006/1/20
|
"{0:yyyy年M月d日}"
|
2006年1月20日 |
|
2006/1/20
|
"{0:ddd}"
|
星期五 |
|
2006/1/20
|
"{0:yyyy/M/d}"
|
2006/1/20 |
四、“…”代替Gridview中的过长字符串
有时候过长的行内显示往往让我们的页面布局混乱不堪,接下来的方法可以将Gridview中过长的行内内容覆盖掉。注意其中的RowDataBound时间的使用。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string content = e.Row.Cells[3].Text;
e.Row.Cells[3].Text = SubStr(content, 12);
}
}
//自定义方法,用来截取超出显示的gridview中的项
private string SubStr(string str, int len)
{
if (str.Length<=len)
{
return str;
}
string newStr = str.Substring(0, len);
newStr += "...";
return newStr;
}
五、向GridView查询中传值
如果之前你还按照提示一中的方法修改Gridview中的操作数据的话,现在你可以使用这种方法更高效的完成相应的操作了。它可以向GridView中where语句添加相应的值,这些值可以来自Cookie,Session,Url传值,控件属性甚至是路由和窗体字段。

如何Boy现在你可以如鱼得水的使用GridView控件了吧。
如果这些内容帮助到你了,希望您给予支持 o(^▽^)o
(支付宝)
ASP.NET中Gridview一些技巧的更多相关文章
- Asp.net中GridView使用详解(很全,很经典 转来的)
Asp.net中GridView使用详解 效果图参考:http://hi.baidu.com/hello%5Fworld%5Fws/album/asp%2Enet中以gv开头的图片 l ...
- Asp.net中GridView使用详解(引)【转】
Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList ...
- Asp.net中GridView使用详解(很全,很经典)
http://blog.csdn.net/hello_world_wusu/article/details/4052844 Asp.net中GridView使用详解 效果图参考:http://hi.b ...
- Asp.net中GridView详解《转》
ASP.NET服务器控件GridView 1 ASP.NET 服务器控件GridView使用 本教程不介绍服务器端控件的呈现,事件处理,状态等理论知识,只介绍服务器端控件的使用操作,如 ...
- asp.net中gridview的checkbox使用总结
1.在gridview中的<column>中加入 <asp:TemplateField HeaderText="选择"> <ItemTemplate& ...
- 使用模板技术处理ASP.NET中GridView额外序号列的问题
问题描述: 现在要在一张GridView表中添加一列来显示行号,要求是显示下一页的时候能够递增而不是从新编号.数据库中的没有相关序号列 如何在软件端实现呢? 通过测试,添加以下代码即可解决需求. &l ...
- Asp.net中GridView使用详解(引)
GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠标移到Gr ...
- ASP.NET中gridview获取当前行的索引值
在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作.例如,可以获得当前行某一个控件元素:设置某一元素的值等等.下面结合实例介绍几种获得GridView当前行索引值的方法. ...
- 025. asp.net中GridView的排序和过滤
前台HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defaul ...
随机推荐
- 【题解】洛谷P1315 [NOIP2011TG] 观光公交(前缀和+贪心)
次元传送门:洛谷P1315 思路 思路大概想到了 可是代码实现却没想到 所以参考题解了 D2T3的贪心果然有难度 我们考虑在每次用加速器有两种情况 到下一个点还需要等待:以后的时间就不再影响了 到下一 ...
- 高考结束了,在门头沟有没有想学php建站的。
教你简单的html 教你文章后台管理 数据库管理及备份 编程工具的使用 如何找到你要学习的内容
- Java中,如何跳出当前的多重嵌套循环
在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环.(Java中支持带标签的break和continue语句)
- IE下页面左偏移并页头空出一行解决方法
在其它浏览器下显示正常,包括360浏览器,在IE下,页面向左偏移,通过firebug查看,head标签为空,并且head标签里面的内容都跑到body标签内了,原因是有bom头,访问的页面或是加载,包含 ...
- LeetCode27.移除元素 JavaScript
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- c++string标准输入和getline()整行读入
1.使用标准IO操作读写string对象 我们都知道,使用标准iostream操作来读写int ,double等内置类型的值,同样,我们也可以使用IO操作来读写string对象. c++ code: ...
- centos总结linux下svn安装与使用
一.安装篇 centos下yum安装 yum install subversion 查看安装是否成功: svnserve --version 查看安装内容与位置 rpm -ql subversion ...
- WEB中需求分析应该考虑的问题
一. 针对用户群体要考虑因素 1.用户年龄 2.选择素材 3.网站布局 4.颜色搭配 5. 用户体验及动效 6.功能便捷 用户需求.用户兴趣爱好.性格.职业.教育水平高低.消费观念.PC端和移动端哪一 ...
- 虚拟机(unbutun16.04)设置静态ip
电脑上装了虚拟机,想用xshell连接,无奈按照默认的网络设置方式每次重启了虚拟机后都要修改ip才能访问,这怎么能忍,经过一番折腾终于搞定这个问题了,解决步骤如下: 大步骤分为两步:其一是主机的设置, ...
- 【C】switch-case里面,加或不加break的区别
int test; test = ; switch(test) { : test++; printf("value = 0"); // 打印printf,后续没有break代码,系 ...