至于case when用在那里,我在这里只是用到了一小部分,一个是与否的问题;
如图所示:
以前的做法是在DataGrid_ItemDataBound事件里面处理,
大概的做法是这样写的
1 Private Sub DataGrid1_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles Datagrid1.ItemDataBound
2 If (e.Item.ItemIndex <> -1) Then
3 ' e.Item.Cells(1).Text = System.Convert.ToString(e.Item.ItemIndex + 1 + DataGrid1.CurrentPageIndex * DataGrid1.PageSize)
4 If e.Item.Cells(5).Text.ToString = "False" Then
5 e.Item.Cells(5).Text = "没有通过"
6 e.Item.BackColor = Color.LightSkyBlue
7
8 Else
9 If e.Item.Cells(5).Text = "True" Then
10 e.Item.Cells(5).Text = "已经通过"
11 End If
12 End If
13 End If
14 End Sub
超级麻烦,不过可以定义背景颜色,也很不错2 If (e.Item.ItemIndex <> -1) Then
3 ' e.Item.Cells(1).Text = System.Convert.ToString(e.Item.ItemIndex + 1 + DataGrid1.CurrentPageIndex * DataGrid1.PageSize)
4 If e.Item.Cells(5).Text.ToString = "False" Then
5 e.Item.Cells(5).Text = "没有通过"
6 e.Item.BackColor = Color.LightSkyBlue
7
8 Else
9 If e.Item.Cells(5).Text = "True" Then
10 e.Item.Cells(5).Text = "已经通过"
11 End If
12 End If
13 End If
14 End Sub
昨天看了case when的用法之后,才知道不要那么麻烦了
1Select
2a.UserBorrowID,a.UserID,a.BookID,a.BorrowDate,b.UserName,c.Title ,a.GoOnDate,a.IsReturn,
3a.IsGoOn,
4a.ReturnDate,
5 case a.IsGoOn
6 when 1 then '是'
7 when 0 then '否'
8 END As IsGoOnBorrow,
9 case a.IsReturn
10 when 1 then '是'
11 when 0 then '否'
12 End as IsReturn1
13from Library_Borrows as a,Library_books as c,Library_Users as b
14where
15a.bookid=c.bookid and a.userid=b.UserID and a.UserID=@UserID
16ORDER BY a.ModifyDate DESC
^_^,建立一个存储过程,然后就不用再ItemBound里面写了。这样就可以解决问题,当然还可以拓展开来,比如可以用case when 的搜索形式进行变换字符串 case when GoOndate<... then '通过' 这样就可以减少在.vb中写代码了。2a.UserBorrowID,a.UserID,a.BookID,a.BorrowDate,b.UserName,c.Title ,a.GoOnDate,a.IsReturn,
3a.IsGoOn,
4a.ReturnDate,
5 case a.IsGoOn
6 when 1 then '是'
7 when 0 then '否'
8 END As IsGoOnBorrow,
9 case a.IsReturn
10 when 1 then '是'
11 when 0 then '否'
12 End as IsReturn1
13from Library_Borrows as a,Library_books as c,Library_Users as b
14where
15a.bookid=c.bookid and a.userid=b.UserID and a.UserID=@UserID
16ORDER BY a.ModifyDate DESC
但是现在还不知道性能怎么样,因为我对测试性能是一无所知。