Как я могу изменить значение метки повторителя из кода позади

У меня есть следующий код Default.aspx

 <asp:Repeater ID="rpt" runat="server" >

 <ItemTemplate>


  <asp:Label ID="lbllat" runat="server" Text='<%#Eval("LAT")%>'></asp:Label>

  <asp:Label ID="lbllon" runat="server" Text='<%#Eval("LON")%>'></asp:Label>

  <asp:Label ID="lbladdress" runat="server"></asp:Label>

  </ItemTemplate>

   </asp:Repeater>

Default.aspx.cs

DataSet ds = new DataSet();
            ds = cls.ReturnDataSet("fetch_data)",
                 new SqlParameter("@Field", "*"),
                 new SqlParameter("@TblNm", "gps_data"));


            rpt.DataSource = ds;
            rpt.DataBind();


     for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {

            String address = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + ds.Tables[0].Rows[0]["LAT"].ToString() + "," + ds.Tables[0].Rows[0]["LON"].ToString() + "&sensor=false";
            var json = new WebClient().DownloadString(address);
            String formatted_address = Regex.Match(json, @"(?s)""formatted_address""\s*:\s*""(.+?)""").Groups[1].Value;

            foreach (RepeaterItem item in rpt.Items)
            {
                Label lab = item.FindControl("lbladdress") as Label;
                lab.Text = formatted_address.ToString();
            }
        }

Из вышеприведенного кода я могу выбрать широту и долготу, но после этого, когда я получу адрес из широты и долготы, он получит все адреса разной широты и долготы, но это будет установлен адрес последней широты и долготы.

поэтому я вижу один и тот же адрес во всех записях вместо разных адресов.

Как я могу установить адрес в соответствии с их широтой и долготой.?

1 ответ

Решение

Вы должны изменить свой код следующим образом:

До

String address = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + ds.Tables[0].Rows[0]["LAT"].ToString() + "," + ds.Tables[0].Rows[0]["LON"].ToString() + "&sensor=false";

foreach (RepeaterItem item in rpt.Items)
{
    Label lab = item.FindControl("lbladdress") as Label;
    lab.Text = formatted_address.ToString();
}

После

String address = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + ds.Tables[0].Rows[i]["LAT"].ToString() + "," + ds.Tables[0].Rows[i]["LON"].ToString() + "&sensor=false";

RepeaterItem item = rpt.Items[i];
Label lab = item.FindControl("lbladdress") as Label;
lab.Text = formatted_address.ToString();
Другие вопросы по тегам