javascript - дополнения - Невозможно получить право на работу панели обновления




instantcms дополнения (2)

Я работаю на веб-сайте с использованием карт Google apiv3. У меня есть кнопка на панели обновления, через которую я выполняю некоторую логику, используя код позади кнопки button_click и javascript.

Так как кнопка находится на панели обновления, я не вижу ничего в окне просмотра firebug, и ни одна из точек останова в javascript не работает. Без панели обновления я вижу поток выполнения в часах, и все работает нормально, но я получаю перезагрузку на карте.

Код в aspx:

    <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Button ID="Button1" runat="server" style="z-index: 1; left: 573px; top: 146px; position: absolute" Text="Show route" onclick="Button1_Click1"/>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click"/>
        </Triggers>
    </asp:UpdatePanel>

Button_Click1:

protected void Button1_Click1(object sender, EventArgs e)
{
    using (con = new MySqlConnection("server=localhost; uid=root;password=as64ws;database=Gmaps"))
    da = new MySqlDataAdapter("select * from routes where uid='a1'", con);
    da.Fill(ds, "mroute");
    foreach (DataRow r in ds.Tables[0].Rows)
    {
        uroute.Add(r["latlng"].ToString());
    }
    croute = new string[uroute.Count];
    croute = uroute.ToArray();
    hdncroute.Value = string.Join("&", croute);
    ScriptManager.RegisterClientScriptBlock(this, typeof(Button), "routes", "droute()", true);
}

Javascript:

function droute()
{
    var route=[];
    var temp;
    temp = document.getElementById('<%= hdncroute.ClientID %>').value;
    route= temp.split('&');
    //Loop to add locations and draw line
    var path= polyline.getPath();
    for(var i=0;i<route.length;i++)
        {
            var input= route[i];
            var ltln = input.split(",",2);
            var lat=parseFloat(ltln[0]);
            var lng=parseFloat(ltln[1]);
            var pos= new google.maps.LatLng(lat,lng);
            var marker= new google.maps.Marker({position:pos,map:map});
            path.push(route[i]);
            google.maps.event.addListener(marker,'click',showiwindow);
        }
    function showiwindow(event)
    {
    iwindow.setContent("<b>Coordinates are:</b><br/>Latitude:"+event.latLng.lat()+"<br/>Longitude:"+event.latLng.lng());
    iwindow.open(map,this);
    } 
}

Я не могу получить значения, которые будут отображаться на карте. Должен ли я помещать кнопку в панель обновления или карту на панели обновления? Где я иду не так?


Установите UpdateMode = «Условный» и установите Button как AsynPostBacktrigger. Может быть, это решит проблему.


Я бы отказался от хорошей части вашей логики, которая у вас есть.

Я бы нажал кнопку, чтобы сделать jQuery ajax-сообщение в веб-службе в вашем коде, который вернет массив обратно в ваш пост ajax, а затем в успешной части вашего сообщения ajax я бы вызвал вашу javascript-процедуру.

http://dotnetguts.blogspot.com/2012/01/jquery-ajax-examples-by-calling-aspnet.html

То, что я описал выше, - это то, как я делаю почти все мои вызовы на карте Google ... Я не видел более подходящего способа сделать это в течение 100 страниц, которые я прочитал по этому вопросу. Пожалуйста, дайте мне знать, если вам нужно больше узнать о том, как это сделать.

Вот еще одна хорошая страница, описывающая, как сделать jQuery ajax post. :

Код вызова по методу JQuery





reload