Laden...

CustomControl IPostBackEventHandler

Erstellt von AlfameisterT vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.033 Views
A
AlfameisterT Themenstarter:in
154 Beiträge seit 2005
vor 17 Jahren
CustomControl IPostBackEventHandler

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?

1.130 Beiträge seit 2005
vor 17 Jahren

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);
}

A
AlfameisterT Themenstarter:in
154 Beiträge seit 2005
vor 17 Jahren

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(

.