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
(支付寶)