DataBinding:'System.Char'不包含名为'xxxxx'的属性

时间:2015-04-09 13:30:20

标签: javascript c# xml google-maps data-binding

DataBinding:'System.Char'不包含名为'City'的属性。 我从xml文件中检索数据,并且我希望将这些字段放在转发器中,使用JavaScript for Google映射数据绑定时发生的情况。

<body>
    <form id="form1" runat="server">
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?      sensor=false"></script>
    <script type="text/javascript">
        var markers = [
        <asp:Repeater ID="rptMarkers" runat="server">
        <ItemTemplate>
                 {
                "title": '<%# Eval("City") %>',
                 "lat": '<%# Eval("Latitude") %>',
                 "lng": '<%# Eval("Longitude") %>',
                
             }
    </ItemTemplate>
    <SeparatorTemplate>
        ,
    </SeparatorTemplate>
    </asp:Repeater>
    ];
    </script>
    <script type="text/javascript">

        window.onload = function () {
            var mapOptions = {
                center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
                zoom: 8,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var infoWindow = new google.maps.InfoWindow();
            var map = new google.maps.Map(document.getElementById("dvMap"), mapOptions);
            for (i = 0; i < markers.length; i++) {
                var data = markers[i]
                var myLatlng = new google.maps.LatLng(data.lat, data.lng);
                var marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map,
                    title: data.title
                });
                (function (marker, data) {
                    google.maps.event.addListener(marker, "click", function (e) {
                        infoWindow.open(map, marker);
                    });
                })(marker, data);
            }
        }
    </script>

    <div id="dvMap" style="width: 500px; height: 500px">
    </div>
      </form>

这里的代码,`

string xx = string.Empty;
void GetData(string strRsult)
{
    XmlDataDocument xmlDataDoc = new XmlDataDocument();
    xmlDataDoc.LoadXml(strRsult);
    foreach (XmlNode n in xmlDataDoc.DocumentElement.GetElementsByTagName("Property"))
    {
        if (n.HasChildNodes)
        {
            foreach (XmlNode childNode in n)
            {
                switch (childNode.Name)
                {
                    case "GEOData":
                        {

                            xx = childNode.Attributes["City"].Value + ", " + childNode.Attributes["Longitude"].Value + ", " + childNode.Attributes["Latitude"].Value;
                            rptMarkers.DataSource = xx.ToCharArray();
                            rptMarkers.DataBind();

                            break;
                        }

                    default: break;
                }
            }
        }

    }
}`

1 个答案:

答案 0 :(得分:0)

目前,您要将数据源设置为一个字符数组,而Repeater正试图获取每个City的{​​{1}}属性,当然char没有char属性。要先修复此问题,您需要创建一个包含您感兴趣的属性的类。

City

然后从xml创建一个public class Markers { public string City {get; set;} public string Latitude {get; set;} public string Longitude {get; set;} } 集合,并将数据源设置为该集合。

Markers