我有一個情況,我沒有屬性上PageInit設置上添加另一個單獨的按鈕的單擊事件對這些了LinkButton屬性動態地創建了LinkButton基本上,再後來後(即文本,添加點擊事件處理程序等)。設置ID兩次造成的LinkButton的Click事件只火兩次點擊
問題是,我不得不點擊LinkButton 兩次點擊事件處理程序觸發。請記住,所有這些都在更新面板中。
看着它向上和向下後,我意識到我是它的兩倍設置ID以同樣的事情(在PageInit還當我後來設置的屬性)。我看到和估計會弄髒的東西在控制層次,我知道這是問題...但我不完全理解的是爲什麼。
有人能向我解釋什麼技術原因是具有點擊LinkButton的兩倍和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
我添加了一些參考代碼,每次接線了
OnClick
事件...你提到聽起來合乎邏輯,我也許會一直運行到同樣的問題。 –爲什麼你依靠的CreateChildControls()?爲什麼不PageInit? – andleer