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
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的GridView列值绑定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP的程序用客户端连接正常,用C#连接
- 下一篇: [转]VS2008中开发智能设备程序的一