【问题标题】:Asp.net Wizard control e.cancel not workingAsp.net 向导控件 e.cancel 不起作用
【发布时间】:2013-09-01 18:21:01
【问题描述】:

更新: 在下面,如果我将“asp:ListView”更改为“asp:DataList”,则 e.cancel 可以正常工作,但随后布局又回到了传统的表格格式的 div。


我已经使用默认设置在生产中运行了一年多的 asp.net (.Net 4.0) 向导控件。下一个和上一个按钮运行验证并在验证失败的情况下调用 e.cancel=true。侧栏会根据需要调用下一个或上一个按钮。

在我们的新版本中,我不再使用生成表格的默认模式,而是使用 LayoutTemplates。现在下一个和上一个按钮仍然可以正常工作,但侧边栏按钮不能。所有方法都被调用并且变量像以前一样被适当地设置,但是当达到 e.cancel 时它不会取消导航。我什至尝试设置一个变量,然后允许 e.cancel 在侧边栏方法本身中使用,而不是使用下一个/上一个。还是不行。

以下是相关示例:

--标记

            <div id="wizardStepSection"><asp:PlaceHolder ID="WizardStepPlaceHolder" runat="server" /></div>

                 <div id="wizardNavigationSection"><asp:PlaceHolder ID="navigationPlaceHolder" runat="server" /></div>

             </div>            

             <div id="wizardSideBarSection"><asp:PlaceHolder ID="sideBarPlaceHolder" runat="server" /></div>

             <div style="clear: both"></div>

         </div>

      </LayoutTemplate>

        <asp:ListView ID="sideBarList" runat="server">
            <ItemTemplate>
             <div class="inactiveSidebar">
             <asp:LinkButton ID="SideBarButton" runat="server" Text="Button" /></div>
          </ItemTemplate>

            <SelectedItemTemplate>
                <div class="activeSidebar">
                    <asp:LinkButton ID="SideBarButton" runat="server" Text="Button" />
                </div>
      </SelectedItemTemplate>
        </asp:ListView>
    </SideBarTemplate>

--侧边栏按钮 Private Sub VRAWizard_SideBarButtonClick(sender As Object, e As System.Web.UI.WebControls.WizardNavigationEventArgs) 处理 VRAWizard.SideBarButtonClick

        If e.CurrentStepIndex < e.NextStepIndex Then    
            VRAWizard_NextButtonClick(sender, e)                 

        Else    
            VRAWizard_PreviousButtonClick(sender, e)    
        End If



        If Me.cancelleavingstep Then    
            e.Cancel = True    
        End If

    End Sub

--上一个按钮

Private Sub VRAWizard_PreviousButtonClick(sender As Object, e As   System.Web.UI.WebControls.WizardNavigationEventArgs) Handles VRAWizard.PreviousButtonClick

        Select Case validateStep(Me.VRAWizard.WizardSteps.Item(e.CurrentStepIndex).ID)

            Case False    
                Me.cancelleavingstep = True    
                e.Cancel = True    
        End Select

    End Sub

【问题讨论】:

    标签: asp.net vb.net webforms


    【解决方案1】:

    想通了!我对自己太苛刻了。

    我需要保留 asp:DataList 而不是 asp:ListView。然后,添加属性:RepeatLayout="Flow"。完毕! e.cancel 有效,布局在跨度中。

    MSDN documentation for datalist

    【讨论】:

    • 您有什么特别的原因可以归因于此吗?除了'listview很烂'。
    • 我真的不知道。但是 MSDN 文档将 RepeatLayout 属性列为一个选项,我尝试过,它奏效了。此外,我添加了“RepeatLayoutDirection=horizo​​ntal”,它消​​除了跨度之间的中断,因此我可以完全控制布局。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多