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控件了吧。