更新:在下面,如果我將「asp:ListView」更改爲「asp:DataList」e.cancel工作得很好,但佈局又回來了傳統的表格格式而不是divs。Asp.net嚮導控制e.cancel不工作
我有一個asp.net(.net 4.0)嚮導控件在生產中使用默認設置運行一年以上。下一個和上一個按鈕運行驗證,並在驗證失敗的情況下調用e.cancel = true。側欄適當調用下一個或上一個按鈕。
在我們的新版本中,我正在擺脫生成表的默認模式,並使用LayoutTemplates。現在,下一個和上一個按鈕仍然可以正常工作,但側邊欄按鈕不會。所有的方法都被調用並且變量的設置與之前相同,但是當達到e.cancel時,它不會取消導航。我甚至嘗試設置一個變量,然後允許e.cancel在側邊欄方法中使用,而不是使用下一個/前一個。它仍然不起作用。
下面是相關樣品:
--markup
<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>
--side欄按鈕 私人小組VRAWiza rd_SideBarButtonClick(發送者爲對象,E作爲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
--Previous按鈕
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
是否有特定的原因可以歸因於此?除了'listview sucks'之外。 –
我真的不知道。但是MSDN文檔列出了RepeatLayout屬性作爲一個選項,我嘗試過並且工作。另外,我添加了「RepeatLayoutDirection = horizontal」,它消除了跨度之間的間隔,因此我可以完全控制佈局。 – user158017