Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Deklarera event för dynamiska knappar

Postades av 2007-03-06 15:40:39 - Magnus Karlsson, i forum asp.net generellt, Tråden har 14 Kommentarer och lästs av 644 personer

Hur skall man använda AddHandler och Adressof om man skapar upp en knapp dynamiskt i en class som man sedan laddar i en placeholder.

Skall de angess i classen


Så här gör jag när jag skapar upp en imagebutton i en ascx :
<code>
Dim cb As New ImageButton
With cb
.ImageUrl = "pic_sajt/trashcan.gif"
.CssClass = "trashcan"
.ID = o.ToString()
.CommandArgument = CStr(o)
.ToolTip = "Makulera"
End With
AddHandler cb.Command, AddressOf command_makulera
</code>


Svara

Sv: AddHandler ...

Postades av 2007-03-06 16:33:40 - Ted Nyberg

Ett tips är att läsa om Events och Delegates på MSDN eller liknande sida!


Svara

Sv:AddHandler ...

Postades av 2007-03-06 18:15:27 - Magnus Karlsson

Försöker förklara igen. Jag vill skapa upp lite knappar dynamiskt i en class som jag sedan skickar till en placeholder på min ascx-sida. Men sedan vill jag också kunna fånga upp knapptryckningar.

Men jag får bara fel :

Error Value of type 'System.EventHandler' cannot be converted to 'System.Web.UI.WebControls.CommandEventHandler'.

Error Method 'Protected Sub command_makulera(sender As Object, e As System.Web.UI.WebControls.CommandEventArgs)' does not have the same signature as delegate 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)'.


Min klass ser ut som följer :

<code>

Min klass ser ut som följer :

Imports Microsoft.VisualBasic

Public Class grid_col


Public Id As String
Public ImageUrl As String
Public Tooltip As String
Public CommandArgument As String
Public EditType As et
Public Visible As Boolean
Public _Plh As New PlaceHolder
Public _Addressof As EventHandler


Public Enum et
Normal = 1
Label = 2
Textbox = 3
Checkbox = 4
Imagebutton = 5
Image = 6
End Enum


Public Function MAKEPLH() As PlaceHolder
MAKEPLH = Nothing
Dim test As New PlaceHolder

Select Case EditType


Case et.Imagebutton
Dim lbu As New ImageButton
With lbu
.ID = Id
.ImageUrl = ImageUrl
.ToolTip = Tooltip
AddHandler .Command, _Addressof
End With
test.Controls.Add(lbu)


End Select

Return test

End Function

End Class
</code>


På ascx sidan ser det ut så här :

<code>
Partial Class adm_beslut_insertupdate
Inherits System.Web.UI.UserControl



Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender

With objCol
.Id = "2345_"
.EditType = grid_col.et.Imagebutton
.ImageUrl = ""
._Addressof = AddressOf command_makulera
End With
PlaceHolder1.Controls.Add(objCol.MAKEPLH)

End Sub




'Tar hand om knapp tryckning
Protected Sub command_makulera(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)

' hämtar id för tryckt knapp
Dim item_number As String = e.CommandArgument()


'Här har jag lite mer kod på vad som skall hända

End Sub


End class
</code>


Svara

Sv: AddHandler ...

Postades av 2007-03-07 06:32:13 - Magnus Karlsson

Det som är problemet är

Från classen:
<code>
Public _Addressof As EventHandler
AddHandler .Command, _Addressof
</code>

Från Ascx:en:
<code>
._Addressof = AddressOf command_makulera
</code>


Svara

Sv:AddHandler ...

Postades av 2007-03-07 10:43:09 - Magnus Karlsson


Jag har jämfört HTML-koden för en Imagebutton som är skapad dynamiskt i min ascx via följande kod:
<code>
Dim cb As New ImageButton
With cb
.ImageUrl = "pic_sajt/trashcan.gif"
.CssClass = "trashcan"
.ID = o.ToString()
.CommandArgument = CStr(o)
.ToolTip = "Makulera"
End With
AddHandler cb.Command, AddressOf command_makulera
</code>

med den Imagebutton som jag skapat via min class och de ser i princip identiska ut. Men ändå hoppar man inte in i subben command_makulera vid click.

....?


Svara

Sv: AddHandler ...

Postades av 2007-03-07 10:55:36 - Magnus Karlsson

Föresten hur i hela friden kan servern veta att följande html skall hoppa in i subben "command_makulera" ?

<code>
<input type="image" name="ucMainwindow$ctl00$2" id="ucMainwindow_ctl00_2" title="Makulera" class="trashcan" src="pic_sajt/trashcan.gif" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ucMainwindow$ctl00$2&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" style="border-width:0px;" />
</Code>


Svara

Sv: AddHandler ...

Postades av 2007-03-07 10:55:46 - Ted Nyberg

Sök på ASP.NET Page Life Cycle på exempelvis Google eller MSDN, du måste läsa på om de olika eventen för att se varför det inte fungerar.

Det är av yttersta vikt att man lägger till dynamiska kontroller vid rätt tidpunkt, samt att man återskapar dom vid PostBacks.

Lycka till!


Svara

Sv:AddHandler ...

Postades av 2007-03-07 11:14:06 - Magnus Karlsson

Jag har läst på MSDN och på ASP.net om delegates, events mm men jag kan ändå omvandla det de något som hjälper min situation.

Det jag tillslut vill åstakomma med min kod är en class som dynamiskt bygger upp en gridd.


Svara

Sv:AddHandler ...

Postades av 2007-03-07 13:56:02 - Magnus Karlsson


Alla buttons syns när de ska. Det som är problemet är att synka ihop den dynamiskt skapade knappen med den sub som skall utföra händelsen vi klickadet.


Svara

Sv: AddHandler ...

Postades av 2007-03-07 14:22:42 - Ted Nyberg

Om du kör automatisk "EventWireUp" kommer eventhandlers att tilldelas vid ett visst ögonblick i livscykeln - DÅ måste kontrollen finnas (därav tipset om att läsa på om just livscykeln för Page-objektet).

Du kan lägga till en kontroll så sent som OnPreRender (den kommer synas), men gör du det inte under exempelvis OnInit kommer du inte få någon funktionalitet, ViewState etc.


Svara

Sv:AddHandler ...

Postades av 2007-03-07 14:50:55 - Magnus Karlsson


EventWireUp = AutoEventWireup ?
<code>
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
</code>

Öppnar mitt objekt från "Page_PreRender" OnInit ? i VB...


Svara

Sv:AddHandler ...

Postades av 2007-03-07 14:55:15 - Magnus Karlsson

Jag har fått det att fungera ...

Tack Ted!
/Magnus


Svara

Sv: AddHandler ...

Postades av 2007-03-07 16:30:23 - Ted Nyberg

Grattis! Skam den som ger sig! ;)

"AutoEventWireUp" löser ofta många problem! :)


Svara

Sv:AddHandler ...

Postades av 2007-03-07 16:43:56 - Magnus Karlsson

Det var inte den... utan Page_Init och CommandEventHandler som var lösningen


Svara

Sv: AddHandler ...

Postades av 2007-03-07 16:53:58 - Ted Nyberg

Ah, trodde att du hade ändrat det tidigare...

Som sagt, lägger man till kontroller för sent i livscykeln kommer de ej att inkluderas i kontrollträdet och då kan man inte göra mycket annat än att få dom utritade på skärmen.

Slutet gott, allting gott! :)


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
765
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies