Formview и MS-Ajax UpdatePanel - PullRequest
       30

Formview и MS-Ajax UpdatePanel

1 голос
/ 03 апреля 2009

У меня проблема с условным отображением кнопки редактирования формы после частичной обратной передачи, вызванной элементом управления формы. У меня есть кнопка редактирования, определенная в ItemTemplate следующим образом:

<asp:FormView ID="fvGenericDetails" runat="server">
    <ItemTemplate>
       <asp:Button ID="btnEditGenericDetails" runat="server" Visible="false" CausesValidation="False" CssClass="prepend-top" CommandName="Edit" Text="Edit Generic Details" />
</ItemTemplate>

Кнопка условно отображается в зависимости от привилегий пользователя в событии загрузки страницы:

If CurrentUser.HasAdminStatus and fvGenericDetails.CurrentMode = FormViewMode.ReadOnly Then
    Dim btnEditGenericDetails As Button =  CType(Me.fvGenericDetails.FindControl("btnEditGenericDetails"), Button)
    btnEditGenericDetails.Visible = True
End If

Проблема, с которой я столкнулся, состоит в том, что, поскольку элемент управления formview находится в UpdatePanel, частичная обратная передача не вызывает событие загрузки страницы, когда элемент управления возвращается в режим только для чтения, а кнопка редактирования не отображается. Какое событие я должен использовать, чтобы разрешить эту частичную обратную передачу?

Редактировать: после отладки страницы после частичной обратной передачи страница действительно достигает события page_load, но formview.currentmode = edit: |

Я пытался использовать событие ModeChanged безуспешно. Ответ только не использовать контроль формы?

Спасибо:)

Ответы [ 3 ]

0 голосов
/ 03 апреля 2009

, если у вас нет логики отображения кнопок в

if(!IsPostBack){} //don't know what the VB equivalent is

ваш код должен работать просто отлично. запустите отладчик и установите точку останова в операторе IF и посмотрите, что fvGenericDetails.CurrentMode оценивает как

0 голосов
/ 16 апреля 2009

человек, может быть, это поможет, но попробуйте изменить представление формы на странице Prerender или Init evnt

0 голосов
/ 03 апреля 2009

Я думаю, что лучшее место для этого было бы на событии FormView_ModeChanging, как это:

Protected Sub FormView1_ItemDataBound(ByVal sender As Object, ByVal e As EventArgs) Handles FormView1.ItemDataBound
        If e.NewMode = FormViewMode.ReadOnly Then
            If CurrentUser.HasAdminStatus Then
                Dim btnEditGenericDetails As Button = CType(Me.fvGenericDetails.FindControl("btnEditGenericDetails"), Button)
                btnEditGenericDetails.Visible = True

            End If
        End If
End Sub

Хорошо ... Если вы поместите свой код в обработчик событий ItemDataBound , он должен работать. Это как-то связано с тем, что InsertTemplate не существует, пока не существует объект, связанный с FormView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...