2009-03-11 3 views
0

Ich habe eine ASP.NET DDL, die so aussieht, als ich Quelle anzuzeigen:ASP.NET 2.0: eine JavaScript-Funktion von onChange mit Autopostback-Aufruf = true

<select name="testControl" onchange="DoCustomStuff();setTimeout('__doPostBack(\'testControl\',\'\')', 0)" id="testControl"> 

Es sieht wie folgt aus auf der CS- Seite :

<asp:DropDownList ID="testControl" runat="server" onchange="DoCustomStuff()" OnSelectedIndexChanged="testControl_Changed" AutoPostBack="true" /> 

Kann jemand ein Problem bei der Verwendung Onchange und Autopostback = "true" auf einem DDL so sehen? Ich frage, weil wir einige Benutzer haben, für die der DoCustomStuff() scheinbar nicht korrekt aufgerufen wird, und ich frage mich, ob es möglich wäre, das __doPostBack() auszuführen, bevor DoCustomStuff() seine Arbeit abschließt.

Antwort

0

Try Postbacks Verweis manuell so befestigen:

Page.ClientScript.RegisterClientScriptBlock(
    typeof(_Default), 
    "PageScripts", 
    string.Format("function DoCustomStuff() { /* Your Code Here */ {0} }", Page.ClientScript.GetPostBackEventReference(testControl, string.Empty)) 
); 

testControl.Attributes["onchange"] = "DoCustomStuff();"; 

dies die Referenz Postback Client-Seite gibt:

Page.ClientScript.GetPostBackEventReference(testControl, string.Empty))