if(!isPostBack)ステートメントがありません。
背後にあるCSコード:
private void TestPlacesApi()
{
GeoRequest request = new GeoRequest("LU7 0JX");
GeoResponse response = request.GetResponse();
if (response.Status == GeoStatus.ZERO_RESULTS) return;
GeoLocation location = response.Results[0].Geometry.Location;
double latitude = location.Latitude;
double longitude = location.Longitude;
var placesWebReq = new GPlacesWebRequest
{
Latitude = latitude.ToString(),
Longitide = longitude.ToString(),
Radius = "7500",
Types = "restaurant",
Sensor = "false"
};
var url = placesWebReq.GetWebUrlString();
HttpWebRequest webRequest = WebRequest.Create(@url) as HttpWebRequest;
webRequest.Timeout = 20000;
webRequest.Method = "GET";
webRequest.BeginGetResponse(new AsyncCallback(RequestCompleted), webRequest);
}
private void RequestCompleted(IAsyncResult result)
{
var request = (HttpWebRequest)result.AsyncState;
var response = (HttpWebResponse)request.EndGetResponse(result);
var s = response.GetResponseStream();
RootObjectPlaces place;
using (var stream = response.GetResponseStream())
{
var r = new StreamReader(stream);
var resp = r.ReadToEnd();
place = new RootObjectPlaces();
JsonConvert.PopulateObject(resp, place);
}
List<GLocatedRestaurant> restaurantList = new List<GLocatedRestaurant>();
foreach (var theplace in place.Results)
{
restaurantList.Add(new GLocatedRestaurant
{
Icon = theplace.Icon,
Name = theplace.Name,
Opening_hours = theplace.Opening_hours,
Photos = theplace.Photos,
Price_level = theplace.Price_level,
Types = theplace.Types,
Vicinity = theplace.Vicinity,
Rating = theplace.Rating,
// Address = Util.GetAddressFromGeometry(theplace.Geometry.Location)
}
);
}
this.RestaurantRepeater.DataSource = restaurantList;
RestaurantRepeater.DataBind();
//UpdatePanel1.UpdateMode = UpdatePanelUpdateMode.Conditional;
//UpdatePanel1.Update();
}
protected void onDataBind(object sender, RepeaterItemEventArgs e)
{
Util.trace("HAHAHA");
}
およびaspx:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Repeater ID="RestaurantRepeater" OnItemDataBound="onDataBind" runat="server">
<ItemTemplate>
<div runat="server" id="restaurantsList">
<div class="restaurantListing" id='restaurantListing'>
<img class='restaurantImage' src='<%# DataBinder.Eval(Container.DataItem, "Icon")%>' />
<div class="restaurantRightInfo" id='restaurantRightInfo'>
<%# DataBinder.Eval(Container.DataItem, "Address")%><br />
</div>
<div class="ratingInfo" id='ratingInfo'>
<%# DataBinder.Eval(Container.DataItem, "Name")%><br />
<%# DataBinder.Eval(Container.DataItem, "Opening_hours")%><br />
<%# DataBinder.Eval(Container.DataItem, "Rating")%><br />
<%# DataBinder.Eval(Container.DataItem, "Vicinity")%><br />
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
それが最初のポストバックについてであるのか、それとも最初にページをロードするときにページをロードするのに時間がかかるためかはわかりません。
ポストバックが発生してからしばらくするとrequestCompleted関数が呼び出されるため、更新パネルがあります。更新パネルが機能していると思っていましたが、今では初めてしか機能しません。念のため、updatepanel.update()コードのコメントを外してみましたが、同じことが起こります。OnDataBindにブレークポイントを設定しましたが、これは初めて起動する場合にのみ発生します。それ以外は発砲しません。
リストがまだ作成されていないため、ページの読み込み時にデータをバインドできません。