Wert von Usercontrol an anderes Usercontrol übergeben

wani

Grünschnabel
hi

Also ich steh vor folgendem Problem, ich möchte von einem Usercontrol WErte an ein anderes Usercontrol übergeben. Das erste Control wird mittls eines Buttonclicks geladen, dort werden 2 Dropdownfelder geladen mit denen ich verschiedene Datenbanken auswähl. Jetzt möcht ich den gesamten Datensatz den ich vorher auswähl in einem neuen Usercontrol ausgeben, welches aus Textboxen besteht, die nur mehr darauf warten gefüllt zu werden. Dazu muss ich aber wissen wie ich die Werte aus der Db die ich mittls einem DataReader ausgelesen hab an mein UserControl übergeben kann.
Wäre fein wenn mir wer einen Tipp sagen oder ein Beispiel dafür zeigen könnte.

mfg wani
 
Hi.

Dem neuen UserControl gibst du eine Eigenschaft über welche du die Daten übergeben kannst. Welchen Type diese Eigenschaft hat, musst selbst rausfinden, weiss ja nicht wie du die Daten zwischenspeicherst.
Dort wo du dann dieses Control erstellst, übergibst die Daten.

Im neuen UserControl
Code:
[...]
public Hashtable MyValues
{
	get { ... }
	set { ... }
}

So verwenden..
Code:
MyControl mc = new (MyControl) this.LoadControl("..");
mc.MyValues =  BlablaGetHashtableFromDataBase();

Das neue UserControl dann einfach irgend einem Placeholder oder sonstigem hinzufügen.

MfG,
Alex
 
Hallo,

Ich hab ein ähnliches Problem unter ASP.NET und VB.

Ich möchte den Integer Wert einer ASP Seite auf ein untergeordnetes Usercontrol übergeben.
Der Aufruf des Usercontrols erfolgt im Codebehind der ASPX Seite.

phArtikelTypen.Controls.Add(Page.LoadControl(template))

PhArtikelTypen ist dabei ein Placeholder in der ASPX Datei.
Template ist nur eine Variable, die den Pfad+Dateinamen der ASCX-Datei enthält.
Leider steigt ich grad nich dahinter, wie ich nun die Integer Variable an die ASCX-Datei übergeben kann.
 
Hallo Birk.

Geht genau so wie ich es oben beschrieben habe.
Beim Laden des Controls zuerst in eine Variable speichern,. Über diese kannst du dann Eigenschaften setzen, und dann erst irgendwo hinzufügen.

Solltest du nicht wissen welches UserControl du lädst, könntest du entweder mit ein paar If-Abfragen überprüfen welches UserControl es ist.

Eine andere Möglichkeit wäre, das du dir eine abstrakte Klasse mit den benötigten Feldern erstellst, und dann deine Controls davon ableitest.

Code:
public abstract class BlaControl : UserControl
{
    private Hashtable ht;
    public Hashtable CustomData
    {
        get { .. }
        set { .. }
    }

    public BlaControl()
    {
        ht = new Hashtable();
    }
}

public class myUserControl : BlaControl
{
    // ...jetzt der Stuff der für jedes Control anders ist
}
[..]
// Dort wo du Laden willst..
// Zu einem BlaControl casten, da ja alle Controls davon ableiten..
BlaControl myControl = (BlaControl) LoadControl(template);
myControl.CustomData.Add("bla","schwupps");
phArtikelTypen.Controls.Add(myControl);

So könnte es dann aussehen.

MfG,
Alex
 
Zurück