DDavidBMedlem sedan jan. 20001 372 inlägg 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?
DDavidBMedlem sedan jan. 20001 372 inlägg 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.