【发布时间】:2017-08-11 12:12:02
【问题描述】:
我正在尝试在我的应用程序中绑定我的labelIDs。我无法让它工作。我确定名称是否需要与 .cs 文件中的名称匹配?
我在 .aspx 文件中的代码:
<asp:Repeater ID="Repeater_weatherReports" runat="server" onitemcommand="reptrData_ItemCommand">
<ItemTemplate>
<table id="tblWeather" border="0" visible="true">
<tr>
<th>
Weather Info
</th>
</tr>
<tr>
<td>
<asp:Label runat="server" ID="lblCity_Country" Text='<%# Eval("city") %>' />
humidity:<asp:Label runat="server" ID="Label_humidity" Text='<%# Eval("main.humidity") %>' />
</td>
</tr>
<tr>
<td>
min:<asp:Label runat="server" ID="Label_min" Text='<%# Eval("main.temp_min") %>' />
max:<asp:Label runat="server" ID="Label_max" Text='<%# Eval("main.temp_max") %>' />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
我的 C# 代码:
protected void reptrData_ItemCommand(object source, RepeaterCommandEventArgs e)
{
Label lblCity = e.Item.FindControl("lblCity_Country") as Label;
city_name = lblCity.Text;
Label lblHumidity = e.Item.FindControl("Label_humidity") as Label;
humidity = lblHumidity.Text;
Label LblMin = e.Item.FindControl("Label_min") as Label;
humidity = lblHumidity.Text;
Label LblMax = e.Item.FindControl("Label_max") as Label;
temp_max = lblHumidity.Text;
}
protected void GetWeatherInfo(object sender, EventArgs e)
{
string appID = "hidden";
//string url = string.Format("http://api.openweathermap.org/data/2.5/weather?q={0}&units=metric&cnt=2&APPID={1}",txtCity.Text,appID);
string url = string.Format("http://api.openweathermap.org/data/2.5/forecast?q={0},us&units=metric&cnt=5&APPID={1}", txtCity.Text, appID);
using (WebClient client = new WebClient())
{
string json = client.DownloadString(url);
JavaScriptSerializer serializer = new JavaScriptSerializer();
WeatherInfo weatherinfo = serializer.Deserialize<WeatherInfo>(json);
Repeater_weatherReports.DataSource = weatherinfo.list;
Repeater_weatherReports.DataBind();
int i = 0;
foreach (List list in weatherinfo.list)
{
city_name = weatherinfo.city.name;
//lblDescription.Text = weatherinfo.list[0].weather[0].description;
temp_min = string.Format("{0}", Math.Round(weatherinfo.list[i].main.temp_min, 1));
temp_max = string.Format("{0}", Math.Round(weatherinfo.list[i].main.temp_max, 1));
humidity = weatherinfo.list[i].main.humidity.ToString();
// tblWeather.Visible = true;
i++;
}
}
我得到的错误信息是
'System.Web.HttpException' 类型的异常发生在 System.Web.dll 但未在用户代码中处理 附加 信息:DataBinding:'_Default+List' 不包含属性 名称为“城市”。'
这是发生就行了
<asp:Label runat="server" ID="lblCity_Country" Text='<%# Eval("city") %>' />
我之前没有使用Repeater 处理数据绑定/。任何帮助将不胜感激,
谢谢
【问题讨论】:
-
错误消息是不言自明的。可能您的
DataSource在这部分Eval("city")中没有名为City的列。可能是main.city或其他。 -
嗨 S.Akbari,你说得对,我错过了城市的实际“路径”。我已经添加了这是现在。但是,我在这些变量分配上得到了空值: city_name = weatherinfo.list[i].main.city.name; temp_min = string.Format("{0}", Math.Round(weatherinfo.list[i].main.temp_min, 1)); temp_max = string.Format("{0}", Math.Round(weatherinfo.list[i].main.temp_max, 1));如何调用我的“reptrData_ItemCommand”方法以便绑定每个标签?