none
Variablenwert an Usercontrol senden RRS feed

  • Frage

  • Hallo alle zusammen,

    Ich verzweifle hier langsam. Ich bin sicher, dass ist ganz einfach, aber ich komme nicht dahinter wie es geht.

    Ich möchte gerne den Wert einer Variable an eine (web)Usercontrol senden:

    HTML der Usercontrol:

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    
    Zahl = <%= zahl.ToString() %>

    Codebehind der Usercontrol:

    public partial class WebUserControl : System.Web.UI.UserControl
    {
        protected int zahl;
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        public int Zahl
        {
            set
            {
                zahl = value;
            }
    
            get
            {
                return zahl;
            }
        }
    }

    Die UserControl soll dann (natürlich) in einer webform verwendet werden:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.

    cs" Inherits="_Default" %> <%@ Register TagName="myZahl" TagPrefix="uc" Src="~/WebUserControl.ascx" %> <!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></title> </head> <body> <form id="form1" runat="server"> <div> <uc:myZahl ID="test1" Zahl="<%# testzahl %>" runat="server" /> <br /> <uc:myZahl ID="test2" Zahl="1" runat="server" /> </div> </form> </body> </html>

    Übergebe ich einen Wert direkt (Zahl="1") dann funktioniert das wunderbar, übergebe ich einen Wert mittels einer Variable dann ist Zahl in der Usercontrol immer 0. Ich habe das mit Databind und ohne versucht, ich habe es programmatisch und in der aspx versucht, aber alles ohne Erfolg.

    Es wäre schön, wenn mir jemand hier bitte anhand eines Beispiels zeigen könnte, wie man Variablen übergibt. Die Usercontrols sollen später - in der "richtigen" Anwedung mittels einer Schleife eingefügt werden.

    Vielen Dank schon vorab und sorry für die vermeindlich einfache Frage.

    Grüße Oliver

    Freitag, 6. Juli 2012 11:43

Antworten

  • Kann geschlossen werden... Des Rätzels Lösung ist wirklich sehr einfach:

    Im Codebehind muss beim Load einfach nur der DataBind angestoßen werden, dass ist das ganze Geheimnis.

    protected void Page_Load(object sender, EventArgs e)
        {
            this.DataBind();
        }

    Den entscheidenden Hinweis habe ich hier gefunden, das ist sicher interessant für alle, die ebenfalls wie der Ochs vorm Berge vor diesem Problem stehen:

    www.s-line.de


    Freitag, 6. Juli 2012 15:34