【发布时间】:2013-07-31 18:14:37
【问题描述】:
我有一个 GridView,它显示用户信息以及两个带有图像按钮的模板字段。一种是打开详细信息视图来编辑用户信息。另一种是编辑用户的密码。
在我的代码背后,我有 3 个 IIf 语句来检查某些条件。基于此标准的某些组合,我希望 ImageButtons 显示/不正确显示。
这是我的代码:
Protected Sub gvUsers_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvUsers.RowDataBound
Dim isProvisioned As Boolean
Dim acceptedToS As Boolean
Dim isSuspended As Boolean
'hide password change option for users that have not yet been provisioned or have not accepted ToS Agreement or have been suspended'
If e.Row.RowType = DataControlRowType.DataRow And _
DirectCast(sender, GridView).EditIndex <> e.Row.DataItemIndex Then
isProvisioned = IIf(String.IsNullOrEmpty(e.Row.DataItem(GUser.columns.DATEADDED).ToString), False, True)
acceptedToS = IIf(String.IsNullOrEmpty(e.Row.DataItem(GUser.columns.TOSTIMESTAMP).ToString), False, True)
isSuspended = IIf(String.IsNullOrEmpty(e.Row.DataItem(GUser.columns.SUSPENDDATE).ToString), False, True)
Dim btnAdminEdit As ImageButton = DirectCast(e.Row.FindControl("btnAdminEdit"), ImageButton)
Dim btnAdminSelect As ImageButton = DirectCast(e.Row.FindControl("btnAdminSelect"), ImageButton)
btnAdminEdit.Visible = Not (isSuspended) AndAlso isProvisioned AndAlso acceptedToS
btnAdminSelect.Visible = isProvisioned
Else
gvUsers.EmptyDataText = "No records found matching specified criteria."
End If
End Sub
我不知道发生了什么变化,因为此代码在某一时刻确实有效。但是,当我测试页面时,无论如何,两个图像按钮似乎都出现了。在调试时,我还看到它似乎以相同的方式“评估”每一行。例如,对于通过我的 IIf 语句的每一行,它总是返回相同的值,即使它不是真的。
我有一种预感,它正在获取第一行的值并以某种方式重用它,或者评估同一行;这就是为什么它总是返回相同的值并总是显示图像按钮,即使根据我的 IIf 语句它们不应该是可见的。
非常感谢任何帮助,因为我不太确定如何从这里解决它。
【问题讨论】:
-
我会检查你的数据。也许这是正确的,并且某些原因导致您的所有数据都更新为相同的值。
-
我们可以看到您用于数据绑定 GridView 的代码吗?
标签: asp.net vb.net gridview iif