2013-09-01 25 views
1

更新:在下面,如果我將「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 

回答

0

想通了!我對自己做的太難了。

而不是asp:ListView我需要保持asp:DataList。然後,添加屬性:RepeatLayout =「Flow」。完成! e.cancel的作品和佈局是跨度。

MSDN documentation for datalist

+0

是否有特定的原因可以歸因於此?除了'listview sucks'之外。 –

+0

我真的不知道。但是MSDN文檔列出了RepeatLayout屬性作爲一個選項,我嘗試過並且工作。另外,我添加了「RepeatLayoutDirection = horizo​​ntal」,它消​​除了跨度之間的間隔,因此我可以完全控制佈局。 – user158017