【问题标题】:How to refresh Web Usercontrol on button click如何在按钮单击时刷新 Web 用户控件
【发布时间】:2013-07-25 05:43:04
【问题描述】:

我在 aspx 页面上使用 web 用户控件来显示谷歌地图上的位置,我将位置作为 ASPX 页面加载事件的参数传递到其中,并且每当加载页面时,我都会完美地获取位置。

每当用户在 ASPX 页面上单击“搜索”按钮搜索特定位置时,我必须更改位置,并且我在“搜索”按钮单击事件中将位置传递给 Web 用户控件,但无法获取位置到网络用户控件上。

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;
}

我将此 Web 用户控件包含到 Search.aspx 文件中,并且当我从页面加载事件传递位置时它的工作但当我尝试从搜索按钮单击事件传递位置时,将 Null 值传递到 Web 用户控件的 Mylocations 值中null.. 所以有没有办法用更新的位置重新加载用户控件。

【问题讨论】:

  • 你能把代码发给我们吗?并在页面加载事件中使用“ispostback”
  • 到目前为止,您为解决问题做了哪些尝试。

标签: c# asp.net


【解决方案1】:

我想你可以在这里使用更新面板。您必须将谷歌地图保留在更新面板中,并将针对此按钮的触发器设置为您的地图。那我想你会得到你想要的。如果有任何困惑请告诉我

【讨论】:

  • 嗨,感谢您的回复,我将谷歌地图保留在网络用户控件中,正如您所说,我在更新面板中也保留了用户控件以及触发器,但我无法传递位置这个 web 用户控件点击按钮.. 好像我们看到 asp 页面生命周期事件 Control events 将在页面的 Load 事件之后触发,以便加载用户控件在按钮单击事件之前并阻止我传递位置值...有没有办法在按钮单击后使用更新的值加载用户控件
  • stackoverflow.com/questions/14207174/… 转到此链接。这可能对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多