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


Problem med usercontrols

Postades av 2004-09-20 10:57:46 - Marcus Johansson, i forum asp.net generellt, Tråden har 5 Kommentarer och lästs av 944 personer

Har följande.

default.aspx innehåller tre olika userkontroller.

menuLeft.ascx
menuRight.ascx
menuTop.ascx

dessa representerar en viss design med tex en meny till vänster på sidan.
dessa userkontroller innehåller en annan userkontroll menu.ascx, som visar meny.
denna menykontroll har x antal properties som sätter färg, storlek etc.

idag har jag satt samma properties på de olika designkontrollerna, och sätter sedan värdet på dem i default sidan för att ställa in menyn.

detta gör att det blir mycket samma kod, har försökt med att designkontrollerna ärver menyn, men fick ej det att fungera.

Hur gör man?


Svara

Sv: Problem med usercontrols

Postades av 2004-09-20 13:14:23 - Pelle Johansson

Du kan skriva en klass där alla sidor ärver page_load från och på det sättet ha en funktion där du sätter alla förutsättningar centralt i de fall du vill detta. Ett exempel:

<info>
Du ersätter:
Inherits System.Web.UI.Page
med:
Inherits mittnamespace.SitePageBase

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


Därefter kallar du en funktion som du kan kalla
PageLoadFunctions()

End Sub
</info>

Sen skapar du en ny vb-klass som du kallar exempelvis pagebase.vb. I denna skriver du:

NameSpace mittnamepsace
 Public Class SitePageBase
        Inherits System.Web.UI.Page

        Public Sub New()

        End Sub

        Sub PageLoadFunctions()
          ' här lägger du alla inställningar du vill att aspxsidan och dess uct:er skall
          ' ställas in med när sidan laddas
        End Sub


Svara

Sv: Problem med usercontrols

Postades av 2004-09-20 13:53:38 - Johan Normén

Marcus,

Vad du kan göra är en slags Presenter control/class.
En klass som sägger alla värden för din meny.

Jag är inte helt med på uppbyggnaden men vad du kan göra är ett Interface som du ärver.
ex IMenu sedan bygger du en presenter klass med två metoder.
En som tar emot en Imenu där du sätter värden och en metod där du tar emot page och söker fram de menykontroller du har och sedan ropar du på den metod som sätter dess layout 3 ggr, (en för vaje meny).

På så vis har du en central klass där du lätt kan justera dina kontrollers utssénden.
Detta kommer gå smidigare i .Net 2.0 då du kan skapa templates för alla kontroller du nyttjar.

Alltså.

Skapa en klass ex. UIPresenter släng in två metoder.

SetMenuLayout(Page page)

leta reda på dina menyer, antingen med FindControl efter ID eller Loppa genom alla du har och kolla om de är av typen IMenu

Skapa metoden som sätter utséendet.

SetMenyControlLayour(IMenu menu)

sätt de pubklika värderna. Ex:
menu.Style = ....

Se till så alla din meny ärver IMenu interfacet och koppla på den.

Klart.

(OBS! Du behöver inte använda interface om du inte vill utan kan kasta om din Control som Find Control gav dig till din Meny, det är vilket som.

På det här sättet kan du sedan bygga vidare på din UIPresenter om det är andra värden o saker du vill sätta på gemensamma controller utan att behöva skriva dem om o om igen.

Det finns tusen olika lösningar o vad som är bäst bestämmer du själv. Tänk på att Kraven är viktigast.
Och det är viktigt att du har de flesta kraven framför dig. De ger dig oftast svaret på den lösning som blir effektivast och enklast att hantera med.

Mvh Johan


Svara

Sv: Problem med usercontrols

Postades av 2004-09-20 14:04:52 - Patrik Dahlén

Den lösning som jag använder ser ut så här:

-Wilson MasterPages som huvudmall
Detta är en .ascx som innehåller designkontrollerna.
Alla sidor har sedan denna kontroll inlagd, plus det innehåll som skall finnas i "innehållsdelen".
Jag kan ha olika huvudmallar om jag behöver olika layout.

-BasePage klass
En vanlig .vb fil som ärver Page och som sedan alla andra sidor ärver. Där lägger jag funktionalitet som alla sidor ska ha.

Exempel. OBS, nu blir det till att scrolla. ;)

En mall
<code>
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="BaseTemplate.ascx.vb" Inherits="PDC.Core.Web.BaseTemplate" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<%@ Register TagPrefix="PDC" Namespace="PDC.Core.Web.Controls.Server" Assembly="PDC.Core" %>
<%@ Register TagPrefix="PDC" TagName="HeaderTemplate" Src="~\Templates\HeaderTemplate.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title><asp:Literal ID="litTitle" Runat="server" /></title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<asp:Literal ID="litStyle" Runat="server" />
</HEAD>
<body MS_POSITIONING="GridLayout">
<Form runat="server" ID="Form1">
<div id="divHeader" style="position:absolute; top:20px; left:40px; width:725px; clip:rect(0,725,70,0); visibility: visible; z-index:40;">
<PDC:HeaderTemplate id="HeaderTemplate" runat="server" />
</div>
<div id="divImage" style="position:absolute; top:100px; left:145px; visibility: visible; z-index:70;">
<PDC:ContentRegion runat="server" id="RegionImage">
Innehåll saknas
</PDC:ContentRegion>
</div>
<div id="divLeftContent" style="position:absolute; top:296px; left:145px; visibility: visible; z-index:70;">
<PDC:ContentRegion runat="server" id="RegionLeft">
Innehåll saknas
</PDC:ContentRegion>
</div>
<div id="divRightContent" style="position:absolute; top:297px; left:445px; visibility: visible; z-index:80;">
<PDC:ContentRegion runat="server" id="RegionRight">
Innehåll saknas
</PDC:ContentRegion>
</div>
</Form>
</body>
</HTML>
</code>
Mallens code-behind
<code>
Protected litStyle As Literal
Protected litTitle As Literal

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim aSite As Site = Session("CurrentSite")
litStyle.Text = "<link rel=""stylesheet"" href=""" & ConfigurationSettings.AppSettings("webroot") & "Styles/Main_" & aSite.Id & ".css"">"
litTitle.Text = aSite.Description
End Sub
</code>

Min BasePage klass
<code>
Imports PDC.Core.Business
Imports PDC.Modules.Content.Business
Imports PDC.Modules.Accounts.Business

Namespace Core.Web

Public Class BasePage
Inherits System.Web.UI.Page

' Page Events
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Protected Overrides Sub OnInit(ByVal e As EventArgs)
MyBase.OnInit(e)
AddHandler Me.Load, AddressOf BasePage_Load
AddHandler Me.Error, AddressOf BasePage_Error
End Sub

Protected thisPage As Modules.Content.Business.Page

Private Sub BasePage_Load(ByVal sender As Object, ByVal e As EventArgs)
If Session("CurrentSite") Is Nothing Then
Dim newSite As Site
newSite = New Site(1)
Session("CurrentSite") = newSite
End If
If Request("pageid") <> "" Then
thisPage = New Modules.Content.Business.Page(Request("pageid"), Session("LanguageID"))
End If
End Sub


Protected Sub BasePage_Error(ByVal sender As Object, ByVal e As EventArgs)

Dim currentError As Exception = Server.GetLastError()

' Write error to log file if not already done by AppException
If Not (TypeOf currentError Is AppException) Then
AppException.LogError(currentError.Message.ToString)
End If

' Show error on screen
ShowError(currentError)

' Clear error so that it does not buble up to Application Level
Server.ClearError()

End Sub



' Shared Methods
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Shared Sub ShowError(ByVal currentError As Exception)

Dim context As HttpContext = HttpContext.Current

context.Response.Write( _
"<link rel=""stylesheet"" href=""" & ConfigurationSettings.AppSettings("webroot") & "/Styles/Main.css"">" & _
"<h2>Error</h2><hr/>" & _
"An unexpected error has occurred on this page." & _
"The system administrators have been notified.<br/>" & _
"<br/><b>The error occurred in:</b>" & _
"<pre>" & context.Request.Url.ToString & "</pre>" & _
"<br/><b>Error Message:</b>" & _
"<pre>" & currentError.Message.ToString & "</pre>" & _
"<br/><b>Error Stack:</b>" & _
"<pre>" & currentError.ToString & "</pre>")

End Sub


End Class

End Namespace
</code>

En vanlig sida i sajten
<code>
<%@ Register TagPrefix="PDC" TagName="LoginControl" Src="~\Modules\Accounts\Controls\LoginControl.ascx" %>
<%@ Register TagPrefix="PDC" Namespace="PDC.Core.Web.Controls.Server" Assembly="PDC.Core" %>
<%@ Register TagPrefix="PDC" TagName="NavigationControl" Src="~\Core\Controls\NavigationControl.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="page.aspx.vb" Inherits="PDC.Core.Web.page"%>
<PDC:MasterPage runat="server" id="MPContainer">
<PDC:ContentRegion id="RegionImage" runat="server">
<asp:Image ID="imgMain" Width="620" Height="175" Runat="server" /><br>
<asp:Image ID="imgVertSpace" Height="20" Width="1" ImageURL="../Images/dot_clear.gif" Runat="server" /><br>
<asp:Image ID="imgVertLine" Height="1" Width="620" ImageURL="../Images/dot_grey.gif" Runat="server" /><br>
</PDC:ContentRegion>
<PDC:ContentRegion id="RegionLeft" runat="server">
<PDC:NavigationControl id="NavControl" NavigationType="2" runat="server" /><br><br>
<table cellpadding="0" cellspacing="0" border="0" width="260">
<tr>
<td align="center"><br><br><asp:Image ID="imgSub" Runat="server" /></td>
</tr>
</table>
</PDC:ContentRegion>
<table cellpadding="0" cellspacing="0" border="0" width="320">
<tr>
<td align="right" class="padded" id="CurrentTD" runat="server"><asp:HyperLink Text="Aktuellt" Runat="server" ID="lnkCurrent" /></td>
</tr>
<tr>
<td><asp:Image ID="Image1" Height="18" Width="1" ImageURL="../Images/dot_clear.gif" Runat="server" /><br>
<asp:Label CssClass="header" ID="lblHeader" Runat="server" /><br>
<asp:Image ID="Image2" Height="3" Width="1" ImageURL="../Images/dot_clear.gif" Runat="server" /><br>
<asp:Label ID="lblMain" Runat="server" /></td>
</tr>
</table>
</PDC:masterPage>
</code>
Sidans code-behind
<code>
Imports PDC.Core.Web.Controls.User
Imports PDC.Core.Business

Namespace Core.Web

Public Class page
Inherits BasePage

Protected MPContainer As PDC.Core.Web.Controls.Server.MasterPage
Protected RegionImage As PDC.Core.Web.Controls.Server.ContentRegion
Protected RegionLeft As PDC.Core.Web.Controls.Server.ContentRegion
Protected RegionRight As PDC.Core.Web.Controls.Server.ContentRegion

Protected Overrides Sub OnInit(ByVal e As EventArgs)
MyBase.OnInit(e)
InitializeComponent()
End Sub


'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
AddHandler Me.Load, AddressOf Page_Load
End Sub

Protected lblMain As Label
Protected lblHeader As Label
Protected imgMain As System.Web.UI.WebControls.Image
Protected imgSub As System.Web.UI.WebControls.Image
Protected NavControl As NavigationControl
Protected lnkCurrent As HyperLink
Protected CurrentTD As HtmlTableCell

Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim aSite As Site = Session("CurrentSite")
lnkCurrent.NavigateUrl = "~/Templates/" & aSite.StartPage
CurrentTD.Attributes.Add("onmouseover", "this.className='green'")
CurrentTD.Attributes.Add("onmouseout", "this.className='padded'")
If Not thisPage Is Nothing Then
NavControl.CategoryID = thispage.CategoryID
lblMain.Text = thisPage.Content.GetContent("MainText").Content
lblHeader.Text = thisPage.Content.GetContent("MainHeader").Content
If thisPage.Content.GetContent("MainImage").ContentFile Is Nothing Then
imgMain.ImageUrl = "~/Images/dot_clear.gif"
imgMain.AlternateText = ""
Else
imgMain.ImageUrl = "~/Files/" & thisPage.Content.GetContent("MainImage").ContentFile.Url
imgMain.AlternateText = thisPage.Content.GetContent("MainImage").ContentFile.Description
End If
If thisPage.Content.GetContent("SubImage").ContentFile Is Nothing Then
imgSub.ImageUrl = "~/Images/dot_clear.gif"
imgSub.AlternateText = ""
Else
imgSub.ImageUrl = "~/Files/" & thisPage.Content.GetContent("SubImage").ContentFile.Url
imgSub.AlternateText = thisPage.Content.GetContent("SubImage").ContentFile.Description
End If
Else
imgMain.ImageUrl = "~/Images/dot_clear.gif"
imgMain.AlternateText = ""
End If
End Sub

End Class

End Namespace
</code>

Om jag behöver ändra något i en designkontroll så gör jag det i den kontrollen (precis som du har nu).
Både design och code-behind.
Om jag ska ändra i huvudlayouten så gör jag det i MasterPage mallkontrollen.
Både design och code-behind.
Om funktionaliteten ska ändras för alla sidor gör jag det i BasePage.

Med andra ord, styrningen av designkontrollerna görs i MasterPage mallen.


Svara

Sv: Problem med usercontrols

Postades av 2004-09-20 16:02:51 - Marcus Johansson

Tackar!


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 604
27 953
271 705
5 934
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