0
在下面的ASP.Net 4.5 Gridview Databound事件中,它的工作原理非常好,在我看來,「If Not Usr Is Nothing Then」代碼行實際上應該在For EAch DataControlField之外因爲我只需要檢查一次。但是,當我用整個邏輯「如果不是我們不是那麼」(參見第二代碼迭代),我得到一個錯誤。任何想法重構不能按預期工作
Protected Sub gvEBEvals_DataBound(sender As Object, e As EventArgs) Handles gvEBEvals.DataBound
Dim revColumn As Integer = -1
Dim currentColumn As Integer = -1
Dim usr As MembershipUser = Membership.GetUser(HttpContext.Current.User.Identity.Name)
For Each col As DataControlField In gvEBEvals.Columns
If Not usr Is Nothing Then
If (Roles.IsUserInRole(usr.UserName, "administrator") Or Roles.IsUserInRole(usr.UserName, "developer")) Then
If col.HeaderText.ToLower().Trim() = "revenue potential" Then
revColumn = gvEBEvals.Columns.IndexOf(col)
For Each row As GridViewRow In sender.rows
If revColumn > -1 Then
row.Cells(revColumn).Text = String.Format("{0:c0}", Convert.ToDouble(row.Cells(revColumn).Text))
End If
Next
End If
End If
End If
If col.HeaderText.ToLower().Trim() = "is current" Then
currentColumn = gvEBEvals.Columns.IndexOf(col)
For Each row As GridViewRow In sender.Rows
If currentColumn <> -1 Then
If row.Cells(currentColumn).Text = "True" Then row.Font.Bold = True
End If
Next
End If
Next
End Sub
使用一個呼叫測試用戶用戶的存在,哪些錯誤
If Not usr Is Nothing Then
For Each col As DataControlField In gvEBEvals.Columns
If (Roles.IsUserInRole(usr.UserName, "administrator") Or Roles.IsUserInRole(usr.UserName, "developer")) Then
If col.HeaderText.ToLower().Trim() = "revenue potential" Then
revColumn = gvEBEvals.Columns.IndexOf(col)
For Each row As GridViewRow In sender.rows
If revColumn > -1 Then
row.Cells(revColumn).Text = String.Format("{0:c0}", Convert.ToDouble(row.Cells(revColumn).Text))
End If
Next
End If
End If
End If
If col.HeaderText.ToLower().Trim() = "is current" Then
currentColumn = gvEBEvals.Columns.IndexOf(col)
For Each row As GridViewRow In sender.Rows
If currentColumn <> -1 Then
If row.Cells(currentColumn).Text = "True" Then row.Font.Bold = True
End If
Next
End If
Next
Else
For Each col As DataControlField In gvEBEvals.Columns
If col.HeaderText.ToLower().Trim() = "is current" Then
currentColumn = gvEBEvals.Columns.IndexOf(col)
For Each row As GridViewRow In sender.Rows
If currentColumn <> -1 Then
If row.Cells(currentColumn).Text = "True" Then row.Font.Bold = True
End If
Next
End If
Next
End If