【发布时间】: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
【问题讨论】: