webForumDet fria alternativet

Data från UserControl till sida

.NET

1 svar · 290 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Frågan#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.

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)