0

onClickコードビハインドでコードonClientClickを処理し、JavaScriptコードを処理するためのAspサーバーコントロールボタンがあります。コードは次のとおりです。

更新: Icarus ソリューションに従って、更新されたコード:

ボタンソース:

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
        style="z-index: 1; left: 648px; top: 202px; position: absolute" 
        Text="Show route" OnClientClick="droute(); return false" />

<asp:HiddenField ID="hdncroute" runat="server" /> 

コードビハインド:

protected void Button1_Click(object sender, EventArgs e)
{
    using (con = new MySqlConnection("server=localhost; uid=root;password=as64ws;database=Gmaps"))
    da = new MySqlDataAdapter("select * from routes where uid='" + Session["uname"].ToString() + "'", 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);
}

Javascript 関数:

function droute()
{
    var route=[];
    var temp;
    temp = eval(document.getElementById('<%= hdncroute.ClientID %>').value);
    route= temp.split('&');
    //Polyline icon n line settings
    var iconsetngs= {path:google.maps.SymbolPath.FORWARD_CLOSED_ARROW, fillColor:'#FF0000'};
    var polylineoptns= {strokeColor:'#3333FF',strokeOpacity:0.8,strokeWeight:3,map:map,icons:[{icon:iconsetngs,offset:'100%'}]};
    polyline= new google.maps.Polyline(polylineoptns);

    //Loop to add locations and draw line
    var path= polyline.getPath();
    for(var i=0;i<route.length;i++)
        {
            var marker= new google.maps.Marker({position:route[i],map:map});
            path.push(route[i]);
            google.maps.event.addListener(marker,'click',showiwindow);
        }

    //Event Listener's
    function showiwindow(event)
    {
    iwindow.setContent("<b>Coordinates are:</b><br/>Latitude:"+event.latLng.lat()+"<br/>Longitude:"+event.latLng.lng());
    iwindow.open(map,this);
    }  
}

return falseJavaScript関数を書くと更新が回避され、onClickにはvoid戻り型があることも知っています。しかし、ボタンをクリックするとページがリロードされます。

4

2 に答える 2

2

ここにエラーがあります:

route = document.getElementById('<%= croute %>').value;

そのはず:

route = document.getElementById('<%= croute.ClientID %>').value;

アップデート:

マークアップ - ページ内の隠し要素を宣言する

<asp:hiddenfield id="hdnCroute" runat="server" />

//code behind

int [] croute = ... 

hdnCroute.Value = "["+string.Join(",",croute)+"]";

今Javascipt:

//now you have an array back in javascript 
var route= eval(document.getElementById('<%= hdnCroute.ClientID %>').value); 
于 2012-09-09T06:21:03.317 に答える
1

ページがリロードされるのはなぜですか?

OnClientClick="droute(); return false" 

このようなブラウザの内部で:

button.onclick = function(){
    droute(); 
    return false
};

drouteがうまくいかない間、うまくいきreturn falseません。

于 2012-09-09T09:57:42.027 に答える