2013-10-15 191 views
1

我有一個情況,我沒有屬性上PageInit設置上添加另一個單獨的按鈕的單擊事件對這些了LinkBut​​ton屬性動態地創建了LinkBut​​ton基本上,再後來後(即文本,添加點擊事件處理程序等)。設置ID兩次造成的LinkBut​​ton的Click事件只火兩次點擊

問題是,我不得不點擊LinkBut​​ton 兩次點擊事件處理程序觸發。請記住,所有這些都在更新面板中。

看着它向上和向下後,我意識到我是它的兩倍設置ID以同樣的事情(在PageInit還當我後來設置的屬性)。我看到和估計會弄髒的東西在控制層次,我知道這是問題...但我不完全理解的是爲什麼

有人能向我解釋什麼技術原因是具有點擊LinkBut​​ton的兩倍和ID爲什麼設置爲同一件事兩次造成的?

CODE

這發生在的CreateChildControls()

Private Sub InitializeLinkBreadCrumbPlaceHolders() 
    Dim counter As Integer = 0 

    'Adding the handlers has to take place before/on Page.Init... 
    For counter = 0 To LEVEL_CAP 
     _linkDynamic = New LinkButton() 
     'Add all the links 
     Me._placeHolder.Controls.Add(_linkDynamic) 
     With _linkDynamic 
      AddHandler .Click, AddressOf Link_Click 
      .Style.Add("display", "none") 
      .ID = String.Format("lbl{0}", counter) 
     End With 
    Next 
End Sub 

而發生這種情況時,按下一個普通按鈕(牢記這一切的是一個更新面板內)

Private Sub SetHyperLinkBreadCrumbValues(Optional ByVal ShouldAddAsLink As Boolean = True) 

    'Don't add a new link if we went backwards 
    If ShouldAddAsLink Then 
     Me.Links(Me.CurrentLevel) = Me.LinkHeader 
    End If 

    'Go through the collection to set the values of the existing linkbuttons 
    For Each element As DictionaryEntry In Me.Links 
     'Links 1-based index 
     With CType(Me._placeHolder.Controls.Item(CInt(element.Key) - 1), LinkButton) 
      .Font.Name = "Arial" 
      .Font.Size = 11 
      If CInt(element.Key) > 1 Then 
       .Text = String.Format(" > {0}", CStr(element.Value)) 
      Else 
       .Text = CStr(element.Value) 
      End If 
      .Visible = True 
      .Style.Add("display", "inline") 
     End With 

     Me.TrimDescriptionLink(CType(Me._placeHolder.Controls.Item(CInt(element.Key) - 1), LinkButton)) 
    Next 
End Sub 

回答

0

我所看到的(甚至引起)這種行爲不時。不可避免的是,您並不總是添加控件(或者在PageInit中連接OnClick事件。第一次單擊會導致PostBack,並且在第二次服務器頁面生命週期中,您在PageInit期間添加控件。在第二次單擊(和第二次按鈕單擊),事件一接通電源,並觸發正確的事件。你可能不會在PageInit

你能分享一些代碼?

+0

我添加了一些參考代碼,每次接線了OnClick事件...你提到聽起來合乎邏輯,我也許會一直運行到同樣的問題。 –

+0

爲什麼你依靠的CreateChildControls()?爲什麼不PageInit? – andleer