webForumDet fria alternativet

User Control, ändra bild i page load

.NETur .NET

12 svar · 353 visningar · startad av erka

erkaMedlem sedan dec. 19996 522 inlägg
#1

Hej!

Jag har en User Control som består av fyra hyperlink kontroller med en ImageUrl tagg i varje. Min user control ska importeras på dvs olika sidor och beroende på vilken av dessa sidor är så ska jag skicka in en parameter till den som talar om att en viss bild ska ändras och inte vara den bild som är som default.

Tex
Första hyperlink kontrollen heter HprLnkStart, den har ett default värde för ImageUrl och det är "Mnu_Start_Of.giff", men på Start.aspx vill jag i page load sätta ut kontrollen på sidan samt att HprLnkStart kontrollen ska ha ImageUrl = "Mnu_Start_On.gif"

Jag har kollat på asp.net men blir inte klok på dess toturials. Någon som kan ge en knuff i rätt riktigt, vb.net ;) Antar att jag ska pyssla med propertys

Tacksam

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#2

Så här gör jag.

där du inkluderar usercontrolen

<uc:meny runat="server" highlightedpic="start" id="Meny"/>

i usercontrolen
Bilden

<asp:imagebutton borderwidth="0" causesvalidation="False" onclick="start_click" id="Start" runat="server" imageurl="grafik/meny_01.gif" alternatetext="Till startsidan" />

codenehind för usercontrolen

Public Property highlightedpic() As String
        Get
            _highlightedpic = _highlightedpic
        End Get
        Set(ByVal Value As String)
            _highlightedpic = Value
        End Set
    End Property

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If _highlightedpic = "start" Then
            start.ImageUrl = "grafik/meny1_01.gif"
            start.Enabled = False
        end if
end sub

och suben för att redirecta från länken
Public Sub start_click(ByVal sender As Object, ByVal e As ImageClickEventArgs)
        Response.Redirect("default.aspx")
    End Sub
NETworkMedlem sedan juni 20011 732 inlägg
#3

I din user control kan du lägga till en (eller flera) accessors. Sedan skickar du in värden från din sida där den är inkluderad som du sedan tar emot och använder i din UC.

//i din uc:
private string navUrl="";
public string NavUrl{
  set{
    navUrl = value;
  }
}

//I koden på sidan:
protected namespace.class myUC;
myUC.NavURL = string;
DinoMedlem sedan sep. 20011 914 inlägg
#4

Annan metod:

' I userControl, page_load
If InStr(1, Request.FilePath, "category", CompareMethod.Text) Then
   HprLnkStart.ImageUrl = "category_image.gif"
End If
erkaMedlem sedan dec. 19996 522 inlägg
#5

Tack,sak rota i det lite mer nu,

Dino vad exakt gör
InStr(1, Request.FilePath, "category", CompareMethod.Text)

Andreas

Public Property highlightedpic() As String
        Get
            _highlightedpic = _highlightedpic
        End Get
        Set(ByVal Value As String)
            _highlightedpic = Value
        End Set
    End Property

Jag hajjar inte varför du skriver _highlightedpic ?

DinoMedlem sedan sep. 20011 914 inlägg
#6

Den kollar om "category" finns i filnamnet.

NETworkMedlem sedan juni 20011 732 inlägg
#7

erka skrev:

Public Property highlightedpic() As String
        Get
            _highlightedpic = _highlightedpic
        End Get
        Set(ByVal Value As String)
            _highlightedpic = Value
        End Set
    End Property

Jag hajjar inte varför du skriver _highlightedpic ?

_highlightedpic är nog en privat variabel som han sätter med den publika variabeln highlightedpic (det är nämligen _aldrig_ bra att använda den publika variabeln direkt)

Däremot finns det nog ett fel i koden ovan (om inte vb är väldigt annorlunda än c#???) och det är att om du ska kunna använda get så måste du ju returnera något där (annars får du ju inte tag på nåt :) ), alltså:

        Get
            return _highlightedpic
        End Get
andreas_lindhMedlem sedan jan. 20011 140 inlägg
#8

Jag missade

Private _highlightedpic As String = ""

innan
Public property......

Den koden som jag visade fungerar som den ska

NETworkMedlem sedan juni 20011 732 inlägg
#9

:q Nyfiken bara, men man skriver alltså så här i vb?

Get
  variabel = variabel
End Get

Känns inte det minsta logiskt, men vb är ju som det är. ;)

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#10

Så har dom gjort i boken jag har

DinoMedlem sedan sep. 20011 914 inlägg
#11

Nä, vi har return oxå.

erkaMedlem sedan dec. 19996 522 inlägg
#12

Jag skrev den så här

Private ActiveHighLightedPic as String

Public Property highlightedpic() as String  
  Get
    Return highlightedpic
  End Get
  Set(ByVal Value As String)
    ActiveHighLightedPic = Value
  End Set
End Property
DinoMedlem sedan sep. 20011 914 inlägg
#13

Redigering

Private _ActiveHighLightedPic as String

Public Property highlightedpic() as String  
  Get
    Return _ActiveHighLightedPic
  End Get
  Set(ByVal Value As String)
    _ActiveHighLightedPic = Value
  End Set
End Property
135 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)