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


Skriva i en textbox belägen i en acsx från en annan acsx

Postades av 2007-11-06 17:55:57 - Magnus Karlsson, i forum asp.net generellt, Tråden har 6 Kommentarer och lästs av 1595 personer



Jag vill via en ascx leta rätt på en textbox i en annan ascx och skriva i den. Ascx laddas via placeholders.

Nedan kod vill inte fungera.
<code>
Dim txtBox As TextBox
txtBox = CType(FindControl("txtTidat"), TextBox)
txtBox.Text = "HEJ"
</code>

Någon som vet hur man gör ?


Svara

Objektsepparation

Postades av 2007-11-07 09:07:25 - Jon Wiberg

Leta reda på den sida som kontrollen ligger i.
har För mig att det är via
<code>
Me.Parent
</code>

Då har du en referens till den sida som kontrollerna ligger på.
Via denna referens kan du traversera (stega dig genom/vidare) till den andra kontroll som ligger på sidan.

Fårgan är hur objektsepparerat det hela är...
Ett alternativ är att använda dig av kontrollern = websidan i detta fall.
Din kontroll triggar (raise) en händelse (event) som kontrollern reagerar på.
Kontrollern sätter du värdet för den andra kontrollen.

Som liknelse:
Du har en webbsida med en knapp och en textbox.
Sidan fångar in händelsen att du tryckt på knappen, hanterar denna händelse och sätter text i textboxen.
Det är alltså inte knappen självt som sätter texten i textboxen.

// Lycka till


Svara

Sv: Objektsepparation

Postades av 2007-11-07 09:28:01 - Magnus Karlsson


Default.aspx
<code>

<asp:PlaceHolder ID="ucMainwindow" runat="server" />
<asp:PlaceHolder ID="ucPopup" runat="server" />

</code>

i placeholder "ucMainwindow" laddas en ascx vid namn "startform.ascx"

Från "startform.ascx" laddas sedan "selectpic.ascx" i placeholder "ucPopup".

På sidan "selectpic.ascx" finns en knapp. Vid klick på knappen så vill jag skriva "HEJ" i en textbox på "startform.ascx"


Med "me.parent" får jag en ref till default.aspx ?

Men hur skall jag få tag på textboxen i placeholder "ucMainwindow" från "ucPopup" ?


Svara

Bättre OOP-lösning med customcontrols

Postades av 2007-11-07 11:11:05 - Jon Wiberg

Innan jag "serverar" en färdig lösning så är det allmänna tipset att
OM man ska göra kontrroller som har mycket logik och ska påverka sidorna de ligger på...
SÅ är det bättre att använda events coh fånga dem för sidan som kontrollerna ligger på.

Om man känner att göra egna customcontroller är jobbigt och man gillar att använda usercontrols för design och snabbt se hur de ser ut (man är inte ngn eg komponentutvecklare)
Så kan man kombinera de 2
http://weblogs.asp.net/scottgu/archive/2005/08/28/423888.aspx


Jag har testat följande kod nedan och det fungerar för mig
(även bättre felhanteringskontroll kan vara önskvärt.)

Här utgås ifrån att den usercontrol som ligger i angiven placeholdern på sidan
är den första kontrollen och att den endast har en textruta i sig....

Jag använder Me.Page för att komma direkt till den sidan som kontrollen ligger på ist för Me.Parent som refererar till den kontrol som kontrollen ligger i (om man tex har en kontroll i en placeholder som du har)

Lösning:

    Protected Sub btnDoStuff_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDoStuff.Click
        Dim placeholder As Control = Me.Page.FindControl("ucMainwindow")
        ' minifelhantering
        If placeholder IsNot Nothing AndAlso placeholder.Controls.Count > 0 Then
            Dim usercontrol As Control = placeholder.Controls(0)
            DirectCast(usercontrol.Controls(0), TextBox).Text = "Hej"
        End If

    End Sub



Uppdate:
Det ser ut som att du vill bygga ngn kontrol som ska kunna hantera bilder/ likn
så jag chansar lite och skickar med en artikel om kontrol för bildhantering för contentmanagement system
http://www.codeproject.com/aspnet/ImageCMS1.asp


Svara

Sv: Bättre OOP-lösning med customcontrols

Postades av 2007-11-07 12:12:32 - Magnus Karlsson

Jag gjorde en fulis kanske ....

skickade med clientid i en session som jag använder via javascript att skriva i den textbox jag önskar.

Det funkar som jag vill. Men det känns inte riktigt som en ok lösning av mitt problem.


Svara

Sv: Bättre OOP-lösning med customcontrols

Postades av 2007-11-07 18:15:31 - Chris Klug

Jag skulle nog passat på att undvika
<code>
DirectCast(usercontrol.Controls(0), TextBox).Text = "Hej"
</code>
och lagt till en property på usercontrollen istället. Känns snyggare än att in och grotta i kontrollens kontroller. Men som du säger, snyggaste lösningen är väl events. En mellanväg skulle väl vara att låta kontroll 1 anropa en metod på Me.Page som i sin tur vidarebefodrar till kontroll 2. Som sagt var, snyggare med event, men man slipper i alla fall grotta runt så mycket med Controls propertyn...
Bara mina 2 cent...


Svara

usercontrols- Inbyggd begränsning på fulsättet

Postades av 2007-11-09 14:16:29 - Jon Wiberg

Det skulle fungera med property, metod på page med...
OM du använder .NET 1.1 eller den alternativa projektmodellen för web application projects som finns

OM man inte gör det så blir det raskt problem med den modellen.
Har du någonsin provat att typomvandla Me.Page inne i en usercontrols codebehind?
Rakt av går det inte.

Man måste helt plötsligt lägga till en referens till den sidan som kontrollen ska kunna typomvandla till.
--> <%@ Reference Page="~/Default.aspx" %>

Liknande nedan

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="selectpic.ascx.cs" Inherits="selectpic" %>
<%@ Reference Page="~/Default.aspx" %>


Anledningen till detta extrahinder verkar vara att .net-teamet vill förhindra dåliga lösningar
ref: http://www.mcse.ms/message2332035.html

I sammanhanget Reference kan man se mer om detta för usercontrols
på: http://msdn2.microsoft.com/en-us/library/c0az2h86.aspx


När detta referenshinder är överbryggat kan man då skriva i sin usercontrol
selectpic
public partial class selectpic : System.Web.UI.UserControl
{

    protected void btnDoStuff_Click(object sender, EventArgs e)
    {        
        TestPage p = (TestPage)(this.Page);
        p.Message = "Hej";              
    }
}


och i sin Konsumerande sida
TestPage
public partial class TestPage : System.Web.UI.Page 
{
    private startform startFormControl;

    public string Message {
        get { return this.startFormControl.Message; }
        set { this.startFormControl.Message = value;}
    }

    protected void Page_Load(object sender, EventArgs e)
    {                
        startFormControl = (ASP.startform_ascx)this.LoadControl("startform.ascx");
        ucMainwindow.Controls.Add(startFormControl);

        ucPopup.Controls.Add(this.LoadControl("selectpic.ascx"));
    }
}


slutligen startform
public partial class startform : System.Web.UI.UserControl
{
    public string Message
    {
        get { return this.txtTidat.Text; }
        set { this.txtTidat.Text =value; }
    }	
}




Summa summarum: En ful-lösning är en ful-lösning.. oavsett om man försöker använda properties eller inte i detta fallet (varför lägga massa kod för att få en egenskapsmöjlighet på en ful-lösning, när man ändå hårdkodar mot "kontrakt" som inte får ändras?)

Mycket bättre att då som sagt innan använda event-modellen.

2 hyffsade länkar på området:
* http://openmymind.net/communication/index.html
* http://grahamsibley.typepad.com/thoughtfactory/2006/09/decoupled_aspne.html

Se särskilt "Event Driven Communication"-delen på openmymind
(på direklänk) http://openmymind.net/communication/index.html#4.3


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 153
27 952
271 704
1 237
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