Avatar billede karsten_larsen Praktikant
16. marts 2007 - 21:43 Der er 9 kommentarer og
1 løsning

Event fra UserControl skal gøre noget på aspx siden

En UserControl hentes ind i aspx. På UserControl er der en annuller knap, som skal lave følgende:

Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click
' Bind data til et GridView via Sub
GridViewDataBind(GridView1)
' Vis bestemt View 2 af MultiView1
MultiView1.SetActiveView(View2)
End Sub

Problemet er at GridView1 findes på aspx siden og at MultiView ikke er et medlem af UserControl. Selve UserControl findes i View 3

Hvordan kan det løses?

???:-) karsten_larsen
Avatar billede mikkel_sommer Nybegynder
18. marts 2007 - 17:42 #1
Du skal definere et event på din aspx side som du så raiser fra din usercontrol, derved kan du sørge for at noget som sker på din usercontrol får indflydelse på din aspx side og eventuelt andre usercontrols som måtte ligge på din aspx side.
Avatar billede karsten_larsen Praktikant
18. marts 2007 - 18:09 #2
hmm - hvordan vil det se ud - jeg er ikke helt med!
Avatar billede mikkel_sommer Nybegynder
19. marts 2007 - 08:37 #3
På din aspx side definerer du eventet:

Private Sub myEventHandle(ByVal logoUrl As String) Handles myAscx.myEvent
  'Din  kode
End Sub


... og på din ascx side raiser du eventet:

RaiseEvent myEvent("test")
Avatar billede mikkel_sommer Nybegynder
19. marts 2007 - 08:37 #4
din parameter er jo nok noget andet men det skifter du bare ud efter behov
Avatar billede karsten_larsen Praktikant
19. marts 2007 - 09:39 #5
hmm - det ser enkelt ud, men fungerer ikke. Hvad har jeg misforstået?


default2.aspx
<asp:Label ID="Label1" runat="server" Style="z-index: 100; left: 560px; position: absolute; top: 49px" Text="Label"></asp:Label>
<uc1:WebUserControl ID="WebUserControl1" runat="server" />
   

i codebehind
Private Sub DemoEvent(ByVal logoUrl As String) Handles WebUserControl1.myEvent
  Label1.Text = logoUrl.ToString.Trim
End Sub


WebUserControl
<asp:TextBox ID="TextBox1" runat="server" Style="z-index: 100; left: 192px; position: absolute;top: 199px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Style="z-index: 102; left: 201px; position: absolute;top: 257px" Text="Button" Width="60px" />

og Codebehind
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    RaiseEvent DemoEvent("Det virker")
End Sub

Får følgende fejl
"DemoEvent" is not an event of "WebUserControl"
Element "WebUserControl" is not a known element..
Handles clause requieres a WithEvents variable defined in the containing type or one af its base type

?:-) karsten_larsen
Avatar billede mikkel_sommer Nybegynder
19. marts 2007 - 09:48 #6
Det er her fejlen er:

Private Sub DemoEvent(ByVal logoUrl As String) Handles WebUserControl1.myEvent

det er: WebUserControl1.myEvent som er navnet på det event som skal raises.

Det vil sige at du skal have det således:

Private Sub myEvent(ByVal logoUrl As String) Handles WebUserControl1.DemoEvent
Avatar billede karsten_larsen Praktikant
19. marts 2007 - 10:52 #7
Kan godt se logikken, men det giver stadig fejl.! Forstår det simpelthen ikke.

WebUserControl giver følgende fejl:
Handles clause requieres a WithEvents variable defined in the containing type or one af its base type

i

Private Sub myEventHandle(ByVal logoUrl As String) Handles WebUserControl1.myEvent
  Label1.Text = logoUrl.ToString
End Sub

og

myEvent giver følgende fejl:

"myEvent " is not an event of "WebUserControl"

i

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        RaiseEvent myEvent("Det virker")
End Sub

Her er hele koden:


aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<%@ Register Src="WebUserControl.ascx" TagName="WebUserControl" TagPrefix="uc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Style="z-index: 100; left: 135px; position: absolute;
            top: 45px" Text="Label"></asp:Label>
        <uc1:WebUserControl ID="WebUserControl1" runat="server" />
   
    </div>
    </form>
</body>
</html>


CodeBehind:
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub



    Private Sub myEventHandle(ByVal logoUrl As String) Handles WebUserControl1.myEvent
        Label1.Text = logoUrl.ToString
    End Sub
End Class



WebUserControl:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="WebUserControl.ascx.vb" Inherits="WebUserControl" %>
&nbsp;
<asp:Button ID="Button1" runat="server" Height="23px" Style="z-index: 100; left: 210px;
    position: absolute; top: 118px" Text="Button" Width="59px" />
<asp:TextBox ID="TextBox1" runat="server" style="z-index: 102; left: 132px; position: absolute; top: 69px"></asp:TextBox>


og Codebehind
Partial Class WebUserControl
    Inherits System.Web.UI.UserControl

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        RaiseEvent myEvent("Det virker")
    End Sub
End Class
Avatar billede mikkel_sommer Nybegynder
19. marts 2007 - 11:29 #8
Prøv at tilføje denne linie i toppen en din usercontrols codebehind, der hvor du har erklæret andre variabler:

Public Event myEvent(ByVal logoUrl As String)
Avatar billede karsten_larsen Praktikant
19. marts 2007 - 11:49 #9
yes, så virker det - mange tak for hjælpen.

Vil du lave et svar?

Løsningen såfremt andre kan bruge det:

    Protected Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button4.Click
        RaiseEvent abcdefg(sender, e, "test")
    End Sub

    Protected Sub WebUserControl1_abcdefg(ByVal sender As Object, ByVal e As System.EventArgs, ByVal logourl As String) Handles WebUserControl1.abcdefg
        Label1.Text = logourl
    End Sub
Avatar billede mikkel_sommer Nybegynder
19. marts 2007 - 13:03 #10
Det lyder godt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester