2013-07-31 1 views
0

У меня есть GridView, который отображает информацию пользователя вместе с двумя полями шаблона с кнопками с изображением. Один из них - открыть подробное представление для редактирования информации пользователя. Другой - изменить пароль пользователя.Заявление IIF для определения видимости ImageButton в 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 



Я не знаю, что изменилось, так как этот код DID работу в одной точке. Однако, когда я тестирую страницу, оба кнопки изображения, кажется, появляются независимо от того, что. Во время отладки я также видел, что казалось, что «оценивать» каждую строку одинаково. Как и в, для каждой строки, которая прошла через мои инструкции IIf, она всегда возвращала те же значения, даже если это было неверно.

У меня есть догадка, что он принимает значения первой строки и повторно использует ее каким-то образом или оценивает ту же строку; поэтому он всегда возвращает одни и те же значения и всегда показывает кнопки изображения, даже если они не должны быть видимыми в соответствии с моими инструкциями IIf.

Любая помощь очень ценится, так как я не слишком уверен, как ее решить.

+0

Я бы проверял ваши данные. Возможно, это правильно, и что-то заставило все ваши данные обновляться до одних и тех же значений. – jadarnel27

+0

Можем ли мы увидеть код, который вы используете для привязки данных к GridView? – mclark1129

ответ

0

Ну, после того, как я немного углубился, я нашел причину проблемы.

Последнее изменение, которое я сделал перед тем, как увидеть эту проблему, было добавление другого столбца для отображения в GridView. Это исказило индекс столбцов, поэтому мои заявления IIF не проверяли правильные поля данных и, следовательно, неправильно оценивали.

Итак, код, который я разместил, действительно работает и, к счастью, доказал, что я не схожу с ума. Логика правильная!

Спасибо тем, кто нашел время, чтобы взглянуть на этот вопрос!

Смежные вопросы