Frage

Ich bin innerhalb von ...

public class bgchange : IMapServerDropDownBoxAction
{
    void IServerAction.ServerAction(ToolbarItemInfo info)
    {
     Some code...

und nach "ein Code" Ich möchte auslösen

[WebMethod]
public static void DoSome()
{

}

Welche einige Javascript auslöst. Ist das möglich?

Ok, wechseln hier Methoden. Ich war in der Lage zu nennen dosome (); die gefeuert, aber nicht das Javascript auslösen. Ich habe versucht, die Registerstartup Methode zu verwenden, aber nicht vollständig verstehen, wie es zu implementieren. Hier ist, was ich versucht:

public class bgchange : IMapServerDropDownBoxAction
{

void IServerAction.ServerAction(ToolbarItemInfo info)
{
    ...my C# code to perform on dropdown selection...
        //now I want to trigger some javascript...
        // Define the name and type of the client scripts on the page.
        String csname1 = "PopupScript";
        Type cstype = this.GetType();

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;

        // Check to see if the startup script is already registered.
        if (!cs.IsStartupScriptRegistered(cstype, csname1))
        {
            String cstext1 = "alert('Hello World');";
            cs.RegisterStartupScript(cstype, csname1, cstext1, true);
        }
}

}

Ich habe die Registerstartupcode von einem Msdn Beispiel. Klar bin die Umsetzung es mir nicht richtig. Aktuell sagt vs Page.Clientscript „Eine Objektreferenz für das nicht-statisches Feld, Methode oder Eigenschaft‚System.Web.UI.Page.ClientScript.get‘refering zu dem Stück Code erforderlich ist.‚;‘Danke

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob ich voll und ganz die Folge von zu verstehen, was Sie zu tun versuchen, was ist die clientseitige und was nicht ....

Sie können jedoch ein Start-up JavaScript-Methode zur Seite hinzufügen, die die WebMethod dann nennen würde. Wenn ein WebMethod über Javascript aufrufen, können Sie eine Rückruffunktion hinzufügen, die dann aufgerufen werden würde, wenn die WebMethod zurückkehrt.

Wenn Sie ein Script Tag auf Ihrer Seite hinzufügen, können Sie WebMethods in der Seite via Javascript definiert rufen.

<asp:ScriptManager ID="scriptManager1" 
    runat="server" EnablePageMethods="true" />

Von der Page_Load-Funktion können Sie einen Anruf zu Ihrem WebMethod ..

hinzufügen
Page.ClientScript.RegisterStartupScript(
    this.GetType(), 
    "callDoSome",
    "PageMethods.DoSome(Callback_Function, null)", 
    true);

Callback_Function stellt eine Javascript-Funktion, die ausgeführt wird, nachdem die WebMethod genannt wird ...

<script language="javascript" type="text/javascript">
    function Callback_Function(result, context) {
        alert('WebMethod was called');
    }
</script>

EDIT:

Gefunden Link für Web ADF-Steuerelemente . Ist das, was Sie verwenden ??

Von dieser Seite sieht es so etwas wie das wird einen Javascript-Rückruf tun.

public void ServerAction(ToolbarItemInfo info) {
    string jsfunction = "alert('Hello');";
    Map mapctrl = (Map)info.BuddyControls[0];
    CallbackResult cr = new CallbackResult(null, null, "javascript", jsfunction);
    mapctrl.CallbackResults.Add(cr);
}

Andere Tipps

Wenn der oben ist, wie Sie Registerstartup anrufen, wird es nicht funktionieren, weil Sie nicht einen Verweis auf die „Seite“ Objekt haben.

bgchange in Ihrem Beispiel erstreckt Objekt (unter der Annahme IMapServerDropDownBoxAction ist eine Schnittstelle), was bedeutet, dass es keine Page-Instanz ist für Sie zu verweisen.

Das Sie genau die gleiche Sache von einer Asp.Net Seite oder Usercontrol hat, würde es funktionieren, weil Seite eine gültige Referenz wäre.

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(
            this.GetType(),
            "helloworldpopup",
            "alert('hello world');",
            true);          
    }
}

Sie können diese Methoden nicht aufrufen innerhalb eines Browsers direkt vom Server. Sie können jedoch hinzufügen, JavaScript-Funktionen auf die Antwort, die Methoden innerhalb des Browsers ausgeführt werden.

Im Rahmen des server Methode, gehen Sie wie folgt

string script = "<script language='javascript'>\n";
script += "javascriptFunctionHere();\n";
script += "</script>";

Page.RegisterStartupScript("ForceClientToCallServerMethod", script);

Mehr Infos hier

hmmm ... die Frage dramatisch verändert seit meiner ursprünglichen Antwort.

Nun ich denke, die Antwort ist nein. Aber ich könnte falsch sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top