Hallo,
wie komme ich an den Value-Wert des Controls welches das Event auslößt?
Z.B. bei einer DropDownList der SelectedValue?
Z.B. DropDownList
Das Auslösen des Events löße ich über JavaScript aus
mDropDownList.Attributes.Add("onchange", Page.ClientScript.GetPostBackEventReference(this, "myName"));
über den IPostBackEventHandler erfahre ich wer der Schuldige war, nur wie komme ich nun noch an den Value-Wert?
Die DropDownList stellt einen eigenen Event zur Verfügung:
<asp:DropDownList id="bla" OnSelectedIndexChanged="IndexChanged" AutoPostBack="true" runat="Server"/>
void IndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
Response.Write(ddl.selectedValue);
}
Ne leider nicht, handelt sich um ein eigenes WebControl welches ein paar DropDownListen beinhaltet.
Ich hätte zwar eine Lösung gefunden, aber besonders schön ist die nicht. 😁
Man erweitert das EventArgument für den PostBack und fügt den SelectedIndex schon beim Client hinzu.
string clientScript = Page.ClientScript.GetPostBackEventReference(this, "eventArgument");
clientScript = clientScript.Insert(clientScript.LastIndexOf('\'')+1, "+'#'+this.selectedIndex");
dropDownControl.Attributes.Add("onchange", clientScript);
Im RaisePostBack EventHandler muss man des wieder an der Stelle '#' zerpfücken und schon hat man den SelectedIndex.
Das einfachste wäre, man könnte die DropDownList in den ViewState legen, nur bringt da VisualStudio eine Exception das DropDownList als nicht serializierbar makiert ist. X(
.