Probleme mit AddHandler

17/02/2008 - 07:49 von Helmut Röser | Report spam
Hallo zusammen,
ich erzeuge für eine Suche anhand des Suchbegriffs und einer Auswahl aus
einem DropDown eine Tabelle, in welcher die Suchergebnisse angezeigt werden.

Public Function PopulateLocsSearch(ByVal SiteID As String, ByVal
searchString As String) As Table

Dim LocsSearchTableAdapter As New LocsSearchTableAdapter()
Dim LocsSearchDataTable As DataSet.LocsSearchDataTable =
LocsSearchTableAdapter.GetSearchLocsByEquipmentID(SiteID, searchString)

Dim row As DataRow
Dim SearchTable As New Table()

If LocsSearchDataTable.Rows.Count > 0 Then

For Each row In LocsSearchDataTable.Rows
Dim searchRow1 As New TableRow()
SearchTable.Rows.Add(searchRow1)

Dim searchButtonLocs As New ImageButton()
searchButtonLocs.ID = "searchButtonLocs"
searchButtonLocs.ImageUrl = "images/icons/search_click.gif"
AddHandler searchButtonLocs.Click, AddressOf
ShowTreeViewLeftSearch

Dim searchCell0 As New TableCell()
searchRow1.Cells.Add(searchCell0)
searchCell0.Controls.Add(searchButtonLocs)
AddHandler searchButtonLocs.Click, AddressOf
ShowTreeViewLeftSearch

Dim searchCell1 As New TableCell()
searchCell1.Text = row("name").ToString()
searchCell1.CssClass = "searchLog-Spacer"
searchRow1.Cells.Add(searchCell1)

Dim searchCell2 As New TableCell()
searchCell2.Text = row("description").ToString()
searchCell2.CssClass = "searchLog-Spacer"
searchRow1.Cells.Add(searchCell2)
Next
End If

Return SearchTable

End Function

Diese Tabelle wird dann dynamisch in ein DIV geladen - funktioniert ohne
Probleme. Nun möchte ich aber, das beim Klick auf den ImageButton eine Sub
ausgeführt wird (ShowTreeViewLeftSearch), welche mir einen TreeView (passend
zum Suchergebnis) anzeigt. Klicke ich auf den Button, wird nur ein Postback
gemacht. Die Sub bleibt von diesem Klick gànzlich unberührt.
Aus diesem Grund hab ich mir gedacht - mache ich doch im Page_Init ein
FindControl für diesen ImageButton und weise dort per Addhandler den Event
erneut zu - aber hier wird der ImageButton nicht gefunden.

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Init
Dim searchButtonLocs As ImageButton =
Page.FindControl("searchButtonLocs")
If Not IsNothing(searchButtonLocs) Then
AddHandler searchButtonLocs.Click, AddressOf
ShowTreeViewLeftSearch
End If
End Sub

Was mache ich falsch? Ich hoffe jemand kann mir einen entscheidenen Tipp
geben. Ich bin fast am verzweifeln.
Übrigens - wenn ich im Suchergebnis auf den ImageButton klicke, ist
anschliessend auch das Suchergebnis (also die dynamisch erzeugte Tabelle) weg.

Sollte es noch Infos zum besseren Verstàndnis brauchen, dann lasst es mich
wissen.
Vielen Dank schon jetzt.

Gruss Helmut Röser
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
17/02/2008 - 10:50 | Warnen spam
Hallo Helmut,

"Helmut Röser" schrieb:

Was mache ich falsch? Ich hoffe jemand kann mir einen entscheidenen Tipp
geben. Ich bin fast am verzweifeln.



Du musst den Button (und alle anderen dynamischen Controls, die auf einen
Postback reagieren sollen) bei _jedem_ Request neu erzeugen. Und das auch
spàt. bei Page_Load. Wann wird denn "PopulateLocsSearch" aufgerufen? Poste
bitte mal den dazu passenden Code.

Ich kenne deine Anforderungen ja nicht genau aber evtl. wàre das GridView
Control eher was für dich. Dort könntest Du deinen ImageButton deklarativ
einbinden und den ClickHandler gleich mit angeben. Dann sollte das auch
funktionieren.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen