Asp.net向导控件e.cancel不起作用



UPDATE:在下面,如果我将"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(发送方为对象,e为System.Web.UI.WebControls.WizardNavigationEventArgs)处理VRAWizaard.SideBarButton Click

        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:DataList,而不是asp:ListView。然后,添加属性:RepeatLayout="Flow"。完成!e.cancel工作,布局以跨距为单位。

数据列表的MSDN文档

最新更新