Tänkte visa artiklar genom att ladda en placeholder. Men hur gör man för att få med lite styrdata till den ascx som skall laddas? Du kan deklarera någon metod eller egenskap i din ascx och sedan anropa den/sätta egenskapen Exempel ? Kom på det ... har ju gjot det förut. men .... nu är det så att jag vill ladda en ascx i en placeholder via en class och har ingen möjlighet att komma åt den som i mitt förra inlägg Du kan väl använda den med Vad skulle "något_prefix" vara? och var skulle text massan appliceras? Så som det fungerar Hur skall det gå till? Den där koden lägger du till där du vill att din kontroll ska "klistras in". Första raden är för att deklarera ett prefix för din usercontrol, andra är för att "klistra in" din usercontrol just där på sidan. Där kan du sätta publika egenskaper på kontrollen (i exemplet egenskaperna MinValue och MaxValue) Den klass som skall lägga till en ascx i en placeholder befinner sig i mappen "app_code". Ah, nu begrep jag vad du menade tror jag.. Vad är det som inte fungerar med den koden du har idag? Att starta en ascx i en placeholder från en annan ascx är inge problem så länge man registrerar controllen. Men om jag nu vill "on the fly" starta en ascx via en klass-fil belägen app-code mappen så får jag inte tag på min ascx. Det är problemet. Från en klass-fil belägen i "app-code" så kan jag inte starta en "pub_artikel.ascx" och sätta dess publika variabler något värde. Detta pga att pub_artikel som den heter inte kan hittas. Hittar den inte datatypen pub_artikel, eller hittar inte filen pub_artikel.ascx? Testa med LoadControl("~/pub_artikel.ascx") istället Kolla koden för pub_artikel.ascx.cs och kolla vad klassen heter, och vilket namespace den ligger i. Troligtvis använder du fel namn, eller namespace Felmeddelandet blir " Type 'pub_artikel' is not defined ". Klassen finns inte med. Hm, hur ser deklarationen ut (typ första raden eller så) i pub_artikel.ascx ut? Ta en kik på följande gamla inläggSkicka styrdata till en ascx...
<code>
Visa artikel nr 1
myPlaceHolder.Controls.Add(CType(LoadControl("artikel.ascx"), Control))
Visa artikel nr 2
myPlaceHolder.Controls.Add(CType(LoadControl("artikel.ascx"), Control))
</code>Sv: Skicka styrdata till en ascx...
Sv:Skicka styrdata till en ascx...
I windows är det mycket enkelt att sätta värden i ett fönster. Men i asp.net står det still.Sv: Skicka styrdata till en ascx...
<code>
for i = 1 to 2
Dim uc As pub_art = DirectCast(LoadControl("pub_art.ascx"), pub_art)
uc.nr = i
next
</code> Sv:Skicka styrdata till en ascx...
<code>
<%@ Reference Control="artikel.ascx" %>
</code>
måset ju anges i aspx alt ascx som anropar. Då hitas "artikel" nedan. Anars finns inte artikel och markeras som fel.
<code>
Dim uc As artikel = DirectCast(LoadControl("artikel.ascx"), artikel)
uc.Nr = 1
uc.Artben = "Tandkräm"
</code>
Frågan är finns det något annat sätt?Sv: Skicka styrdata till en ascx...
<något_prefix:artikel publik_egenskap="anka" annan_egenskap="ko" />
?Sv:Skicka styrdata till en ascx...
min tanke är att starta en ascx från klass till en placeholder. Samtidigat vill jag skicka med lite styrdata.
tack för svaret. trotts sommar värmen!Sv: Skicka styrdata till en ascx...
Utan denna deklaration i den anropande ascx:en så kan man ej komma åt att skicka med parametrar.
<code>
<%@ Reference Control="artikel.ascx" %>
</code>
När jag googlat finns inte denna deklaration med i något exempel .... skall det gå utan?Sv: Skicka styrdata till en ascx...
Startar och skickar
pub_start.ascx
<code>
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="pub_start.ascx.vb" Inherits="pub_start" %>
<%@ Reference Control="pub_artikel.ascx" %>
<asp:PlaceHolder ID="plhContent" runat="server" />
</code>
pub_start.ascx.vb
<code>
......
Dim uc As pub_artikel = DirectCast(LoadControl("pub_artikel.ascx"), pub_artikel)
uc.Artnr = CurrRows(I)(1).ToString()
uc.Artben = CurrRows(I)(2).ToString()
plhContent.Controls.Add(uc)
.....
</code>
Mottagande
pub_artikel.ascx.
<code>
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="pub_artikel.ascx.vb" Inherits="pub_artikel" %>
</code>
pub_artikel.ascx.vb
<code>
.....
Public Artnr As String
Public Artben as String
......
</code>
Nu vill jag starta och skicka från en klass som inte hänger i en ascx....Sv: Skicka styrdata till en ascx...
Var skall jag lägga koden ...
<code>
<%@ Register TagPrefix="uc" TagName="Spinner" Src="~\Controls\Spinner.ascx" %>
</code>
<code>
<uc:Spinner id="Spinner1" runat="server" MinValue="1" MaxValue="10" />
</code>
artikel.ascx ?
Hur kommer man sedan åt variablerna?
Kanske varit otydlig... men det jag vill är att starta en artkel.ascx i en placeholder som ligger i en en annan ascx från en klass. Sv:Skicka styrdata till en ascx...
Sv:Skicka styrdata till en ascx...
Sv: Skicka styrdata till en ascx...
Sv:Skicka styrdata till en ascx...
Sv:Skicka styrdata till en ascx...
Har hittat svar på asp.net att man skall kunna deklarera uc globalt i web.config. Men hur? Sv: Skicka styrdata till en ascx...
Sv:Skicka styrdata till en ascx...
Dim uc As !!!!PUB_ARTIKEL!!!! = DirectCast(LoadControl("pub_artikel.ascx"), pub_artikel)Sv: Skicka styrdata till en ascx...
Sv:Skicka styrdata till en ascx...
<code>
Public Class pub_artikel
Inherits System.Web.UI.UserControl
</code>Sv:Skicka styrdata till en ascx...
Sv: Skicka styrdata till en ascx...
Hur är det med namespace, ligger sakerna i samma namespace?Sv:Skicka styrdata till en ascx...
<code>
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="pub_artikel.ascx.vb" Inherits="pub_artikel" %>
</code>Jobba med usercontrols, binda mot data Sv: Skicka styrdata till en ascx...
http://www.pellesoft.se/communicate/forum/view.aspx?msgid=256392
Där finns en del svar på olika sätt att jobba med/mot en usercontrol.
Där finns även förklaring till varför man måste ange en referens i aspx:en till kontrollen m.m.
Ditt syfte verkar vara att databinda kontrollen med data som kommer någon annanstans ifrån än att usercontrollen självt kan fylla sig.
Det kan man lösa på flera sätt.
*) Med ID-värden
Antingen om användarkontrollen visar tex 1 post ( en sk. detailsvy)
skicka in ID till den entitet som du skall hämta; ex NewsID så fylls usercontrollen med nyhet baserat på ID.
En listpesentation: Skicka med id för kategori och usercontrolen fyller sig självt med produkter för aktuel kategori (kategoriID)
*) Med datasource-egenskap
Skapa en egenskap till usercontrolen som du deklarativt kan sätta i
a) asp:x läge
b) code behindläge
för händelsen Load för kontrollen så databinder den mot det data som du angett för dess Datasource-egenskap. Detta data kan vara ett enskilt objekt eller en lista (beroende på vad du vill binda mot)
Datat kan även vara löst eller starkt typat.
// Lycka till