我有一个关于Telerik RadGrid控件客户端绑定的问题 . 我想在客户端的城市中填充网格 . 我有一个对象City,它有一个属性Country:
[DataContract]
[KnownType(typeof(Country))]
public class City
{
[DataMember]
public virtual string CityCode { get; set; }
[DataMember]
public virtual string CityName { get; set; }
[DataMember]}
public virtual Country Country { get; set;
}
}
[DataContract]
public class Country
{
[DataMember]
public virtual string CountryCode { get; set; }
[DataMember]
public virtual string Iso2Code { get; set; }
[DataMember]
public virtual string CountryName { get; set; }
[DataMember]
public virtual char RDC { get; set; }
}
我使用JQuery Ajax和WCF将此数据作为JSON对象检索到客户端 . 然后我将它绑定到网格:
rgCity.set_dataSource(dataItem);
rgCity.dataBind();
以下是网格的列定义:
<Columns>
<telerik:GridBoundColumn HeaderText="City Code" DataField="CityCode" MaxLength="3"> </telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="City Name" DataField="CityName"></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Country Code" DataField="CountryCode" MaxLength="2"></telerik:GridBoundColumn>
</Columns>
问题是我没有得到填充数据的国家代码列 . 我认为问题在于数据绑定,但我不确定是否可以绑定复杂的对象 . 我认为应该是这样的:
<telerik:GridBoundColumn HeaderText="Country Code" DataField="**City.CountryCode**" MaxLength="2"></telerik:GridBoundColumn>
我感谢任何帮助解决这个问题!
2 回答
我不认为你可以像这样做复杂的数据绑定 . 相反,我会创建一个直接返回Country Code的新属性,然后绑定到该属性 . 例:
然后是网格的声明性数据绑定:
您可以通过从原始缩小的telerik脚本替换此片段来覆盖Telerik.Web.UI.GridTableView.dataBind函数:
有一些东西,例如,像这样:
AvoidEvalDueToPerformance函数定义如下:
希望这有助于某人,因为这是我偶然发现问题的答案的第一个结果"How to bind RadGrid to complex object clientside"
附:覆盖你可以写的功能