繁体   English   中英

ASP.Net-中继器/数据绑定问题

[英]ASP.Net - Issues with Repeater / DataBinding

我正在尝试将我的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") %>' />&nbsp;
                        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.dll中发生类型'System.Web.HttpException的异常,但未在用户代码中处理。其他信息:数据绑定:'_Default + List'不包含名称为'city'的属性。

这正在发生

<asp:Label runat="server" ID="lblCity_Country" Text='<%# Eval("city") %>' />&nbsp;

我以前没有处理数据绑定/使用Repeater 任何帮助,将不胜感激,

谢谢

看起来像是您的评估不正确的错误。

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

您正在将数据与weatherinfo.list绑定

     Repeater_weatherReports.DataSource = weatherinfo.list;

该列表不包含城市属性,但包含天气信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM