Asp.net Wizard控制e.cancel无法正常工作

时间:2013-09-01 18:21:02

标签: asp.net vb.net webforms

UPDATE:在下面,如果我将“asp:ListView”更改为“asp:DataList”,e.cancel工作得很好,但是布局又以传统的表格格式返回divs。


我使用默认设置在生产中使用了一个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

1 个答案:

答案 0 :(得分:0)

想出来!我在自己身上做得太难了。

而不是asp:ListView我需要保留asp:DataList。然后,添加属性:RepeatLayout =“Flow”。完成! e.cancel工作,布局是跨越。

MSDN documentation for datalist