2013-07-25 5 views
0

ASPX 페이지로드 이벤트의 매개 변수로 위치를 전달할 때 Google Maps에 위치를 표시하고 페이지가로드 될 때마다 aspx 페이지에서 웹 사용자 컨트롤을 사용하고 있습니다. 위치를 완벽하게 확보하고 있습니다.버튼을 클릭 할 때 Web UserControl을 새로 고치는 방법

사용자가 ASPX 페이지에서 "검색"버튼을 클릭 할 때 특정 위치를 검색 할 때마다 위치를 변경해야하며 "검색"버튼 클릭 이벤트에서 웹 사용자 컨트롤에 위치를 전달하지만 가져올 수 없습니다 웹 사용자 컨트롤에 위치

public partial class MapControl : System.Web.UI.UserControl 
{ 
    public List<string> MyLocation {get; set; } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     GeoCode geocode; 
     List<GMarker> markers = new List<GMarker>(); 
     for (int i = 0; i < MyLocation.Count(); i++) 
     { 
      geocode = GMap1.getGeoCodeRequest(MyLocation[i]); 
      GLatLng gLatLng = new GLatLng(geocode.Placemark.coordinates.lat, geocode.Placemark.coordinates.lng); 
      GMap1.setCenter(gLatLng, 20, GMapType.GTypes.Normal); 
      GMarker oMarker = new GMarker(gLatLng); 
      markers.Add(oMarker); 
      //GMap1.Add(oMarker); 
      GListener listener = new GListener(oMarker.ID, GListener.Event.click, string.Format(@"function() {{ var w = new google.maps.InfoWindow(); w.setContent('<center>{0}</center>'); w.open({1}, {2});}}", "<b>" + MyLocation[i] + "</b>", GMap1.GMap_Id, oMarker.ID)); 
      GMap1.Add(listener); 
     } 

     GMap1.Add(new GMapUI()); 
     GMap1.GZoom = 10; 

protected void Button1_Click1(object sender, EventArgs e) 
    { 
List<string> locations = new List<string>(); 
       for (int i = 0; i < ListView1.Items.Count; i++) 
       { 
        Label addressline1 = (Label)this.ListView1.Items[i].FindControl("addr1"); 
        string addrloc = addressline1.Text; 
        locations.Add(addrloc); 
       } 
       MapControl mc = LoadControl("~/MapControl.ascx") as MapControl; 
       mc.MyLocation = locations; 
} 

그리고 난 Search.aspx 파일과에이 웹 사용자 정의 컨트롤을 포함하고 난 페이지로드 이벤트의 작업에서 위치를 통과하지만, 언제의 Mylocations 값으로 Null 값을 받고 검색 버튼 클릭 이벤트에서 위치를 통과하려고 할 때 웹 사용자 정의 컨트롤을 null로 .. 그래서 새로운 방법으로 사용자 정의 컨트롤을 다시로드 할 수있는 방법이 있습니다.

+0

우리에게 코드를 게시 할 수 있습니까? 페이지로드 이벤트에서 "ispostback"을 사용하십시오. – Backtrack

+0

문제를 해결하기 위해 지금까지 무엇을 시도 했습니까? –

답변

0

여기서는 updatepanel을 사용할 수 있다고 생각합니다. Google지도를 업데이트 패널에 유지하고이 버튼에 대한 트리거를지도에 설정해야합니다. 그럼 니가 원하는 걸 얻을 것 같아. 어떤 혼란 pls 알려주십시오

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 웹 사용자 컨트롤에서 Google지도를 유지했는데, 업데이트 패널에서 사용자 컨트롤을 트리거와 함께 유지했지만 버튼에서이 웹 사용자 컨트롤의 위치를 ​​전달할 수 없다고 말씀 하셨듯이 .. asp page life cycle events ** 컨트롤 이벤트 **는 페이지의 ** Load ** 이벤트 이후에 발생되어 버튼 클릭 이벤트 전에 사용자 정의 컨트롤이로드되고 위치 값을 전달하지 못하게합니다. ... 더 새로운 값으로 버튼 클릭 후 사용자 정의 컨트롤을로드 할 수있는 방법이 있습니까 – user1203530

+0

[link] (http://stackoverflow.com/questions/14207174/load-user-control-dynamically-on-button-click) –

+0

http://stackoverflow.com/questions/14207174/load-user-control-dynamically-on-button-click이 링크로 이동하십시오. 이것은 당신에게 도움이 될 수 있습니다. –

관련 문제