【问题标题】:Formview and MS-Ajax UpdatePanelFormview 和 MS-Ajax 更新面板
【发布时间】:2010-10-17 06:09:00
【问题描述】:

在由 formview 控件触发的部分回发后,formview 编辑按钮的条件显示存在问题。我在 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 事件但没有成功。答案只是不使用formview控件吗?

谢谢:)

【问题讨论】:

    标签: asp.net asp.net-ajax webforms


    【解决方案1】:

    伙计,这可能会有所帮助,但请尝试更改 Prerender 或 Init 页面 evnt 上的 formview 视图

    【讨论】:

      【解决方案2】:

      我认为最好的地方是在这样的 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 之前不存在的事实有关。

      【讨论】:

      • 这当然看起来是正确的方法,但不幸的是运行时返回的对象引用未设置为对象的实例,引用按钮。
      【解决方案3】:

      除非你的按钮显示逻辑包含在

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

      您的代码应该可以正常工作。启动调试器并在 IF 语句上设置断点,然后查看 fvGenericDetails.CurrentMode 的结果

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多