Ich versuche Postbacks mit JavaScript-Client-Seite Verarbeitung zu ersetzen, wann immer ich in meinem Code asp.net c 3.5 kann, um die Benutzererfahrung zu verbessern. Ich benutze keine Javascript-Frameworks. Ich benutze vs2008.Wie verwende ich Javascript, um den Namen des UserControls abzurufen, von dem es aufgerufen wird?
Ich habe eine usercontrol .ascx-Datei mit einer Dropdown-Liste und Schaltfläche, die an drei Stellen auf meinem Hauptbildschirm verwendet wird.
Ich hatte ein Postback auf OnSelectedIndexChanged für die Dropdown-Liste getan.
Ich muss nicht jedes Mal Postback, also habe ich versucht, eine JavaScript-Funktion in der Benutzersteuerung, um das ausgewählte Element zu überprüfen und nur ein Postback, wenn es beginnt mit "-".
Der Name der Elemente, die ich in meiner JavaScript-Funktion erhalten muss, hängt jedoch vom Namen der usercontrol-Instanz ab, die ihn aufruft, und ich benötige diesen Namen zur Laufzeit, zum Beispiel: uc1_ddlLocations und uc1_ btnPostBack. Hier
ist der Code:
<script type="text/javascript" language="javascript">
function ddlChange(this) {
var loc = $get("GetTheUserControlNameAndInsertHere_ddlLocations");
if (loc.value.substring(0,1)=='-')
{
var btn = $get("GetTheUserControlNameAndInsertHere_btnPostBack ");
btn.click();
}
</script>
Wie kann ich das tun? Kann jemand einen besseren Weg vorschlagen, um das zu tun, was ich versuche?
Hat der Usercontrol selbst wissen, ob ein Postbacks notwendig ist? Könnte ein "nearsPostback" -Parameter an ddlChange() übergeben werden? – Mike
Ich bin mir nicht sicher, ob ich Ihre Frage verstehe. Damit das Benutzersteuerelement herausfinden kann, ob es ein Postback benötigt, muss es ein Postback durchführen. –
@Mike, @Lill: Die Funktion bestimmt, ob das Postback notwendig ist, nicht das ddl selbst. Die ddl wird entweder immer ein Postback ("AutoPostBack = True") oder nie ("AutoPostBack = false"). Er versucht, eine bedingte Logik zu niedrigeren Bandbreitenkosten einzufügen. – JustLoren