Data från UserControl till sida

.NET

1 svar · 305 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Trådstart#1

Tjena

Jag har en UserControl som något förenklat serut såhär:

private string _selected = null;
public string Selected
{
	get { return _selected; }
}

void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
	_selected = "asd";
}

protected override void CreateChildControls()
{
	DropDownList ddl = new DropDownList();
	ddl.DataValueField = "ID";
	ddl.DataTextField = "Text";
	ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
	ddl.AutoPostBack = true;
	ddl.DataBind();

	P1.Controls.Add(ddl); // P1 är en placeholder
	base.CreateChildControls();
}

Nu är det så att jag vill via min .aspx sida kunna få ut värdet "asd" genom att anropa UserControllen.Selected, detta fungerar dock inte nu utan jag får ut värdet null istället. Alltså hämtar den Selected från Page_Load på sidan innan ddl_SelectedIndexChanged körs.

Nån som vet hur man gör för att lösa detta?

Medlem sedan jan. 20001 372 inlägg
#2

Löste problemet.

EFtersom jag inte använde varken sender eller e i ddl_SelectedIndexChanged(object sender, EventArgs e) så löste jag allt med att göra följande:

public string Selected
{
	get
	{ 
		string _selected;
		_selected = "asd";
		
		return _selected; 
	}
}

protected override void CreateChildControls()
{
	DropDownList ddl = new DropDownList();
	ddl.DataValueField = "ID";
	ddl.DataTextField = "Text";
	ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
	ddl.AutoPostBack = true;
	ddl.DataBind();

	P1.Controls.Add(ddl); // P1 är en placeholder
	base.CreateChildControls();
}

Nu är ju dock koden lite mer komplex än i exemplet ovan :) men ni förstår nog vad jag menar.

375 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
121 ms — deklarationer (db)
117 ms — hämta statistik (db)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)