Telerik GridView 默认的 XElement 数据源的直接绑定,会导致内置的sort, filter ,group等功能无法使用.

原因在于Telerik GridView的那些功能是根据数据类型实现的,而XElement绑定在数据源本身是无法区分类型的。

一个解决方案是绑定的属性转换为具体的 一个个属性,也就是Telerik 官网所谓的various datasource当中XML的绑定方式

另外一个比较适合实际项目的解决方案是 讲数据源转变为Dynamic数据源,然后将ItemSource绑定到这个Dynamic数据源当中。
别的方式或许也有,我没试验出来.

代码如下:

 public void LoadXmlData(XElement data)
{
if (data != null)
{
this.Items = new ObservableCollection<dynamic>(from element in data.Elements() select new DataRow(ToDictionary(element), element));
}
}
   private IDictionary<string, object> ToDictionary(XElement element)
{
var dict = new Dictionary<string, object>();
foreach (var e in element.Elements())
{
dict.Add(e.Name.LocalName, e.Value);
} return dict;
}  

添加一个转换Dynamic的类:

 public class DataRow : DynamicObject, INotifyPropertyChanged
{
readonly IDictionary<string, object> data; //public XElement ItemXml { get; set; } public DataRow(IDictionary<string, object> source,XElement item)
{
data = source;
//Item = item;
} public override IEnumerable<string> GetDynamicMemberNames()
{
return data.Keys;
} public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = this[binder.Name]; return true;
} public override bool TrySetMember(SetMemberBinder binder, object value)
{
this[binder.Name] = value; return true;
} public object this[string columnName]
{
get
{
if (data.ContainsKey(columnName))
{
return data[columnName];
} return null;
}
set
{
if (!data.ContainsKey(columnName))
{
data.Add(columnName, value); OnPropertyChanged(columnName);
}
else
{
if (data[columnName] != value)
{
data[columnName] = value; OnPropertyChanged(columnName);
}
}
}
} private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
} #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; #endregion
}

  

Telerik XML 数据源绑定的问题的更多相关文章

  1. WPF绑定各种数据源之xml数据源

    一.WPF绑定各种数据源索引 WPF 绑定各种数据源之Datatable WPF绑定各种数据源之object数据源 WPF绑定各种数据源之xml数据源 WPF绑定各种数据源之元素控件属性 Bindin ...

  2. XML数据源快速开发框架——XmlFramwork

    浪漫的周末从cnblogs开始.话说,今天和往常的周末一样,韩君躲在被窝里用手机翻阅着园子里的珠玑.一篇<应用XML作为数据库的快速开发框架>的文章在韩君脑子里激起了一波球形闪电.想想上周 ...

  3. Spring Boot + Druid 多数据源绑定

    date: 2019-12-19 14:40:00 updated: 2019-12-19 15:10:00 Spring Boot + Druid 多数据源绑定 版本环境:Spring Boot 2 ...

  4. C#窗体:关于DataGridView的数据源绑定字符串两个值得注意的问题

    无意间遇到的问题,然后就GOOGLE了下,搜到些资料,总结整理如下(注:是转载的) 1. LINQ的查询结果无法直接作为DataGridView的数据源 DataGridView的DataSource ...

  5. coreseek(sphinx)安装1(xml数据源配置和测试)

    1.下载coreseek-3.2.14-32版本.网址:http://www.coreseek.cn/products-install/install_on_windows/   (有详细的安装说明) ...

  6. C#中数据源绑定DataSource以及相关控件(DataGridView)的使用总结

    我们在编程过程中,会涉及到表格数据的显示,存储等,就可能涉及到DataGridView,DataSource, DataTable等概念. 下面我就我自己模糊的一些知识点串讲以下: 1)首先我要讲的是 ...

  7. 使用DataContext和ItemsSource将数据源绑定到ListView上的区别

    在最近的一个项目中,将DataView类型的数据源绑定到ListView控件时,发现当DataView的内容发生变化时,前台的ListView控件的内容并没有发生改变,在这里我先贴出前台要绑定数据源的 ...

  8. vb.net中将DataGridView与数据源绑定

    在< .net中将DataGridView内的数据导出为Excel表格>中说了如何导出数据到Excel,今天这篇文章将讲述如何绑定数据源,在控件中显示我们需要的信息. 在敲机房收费系统的时 ...

  9. GridView绑定数据源 绑定DataReader /DataSet /DataTable

    有一个GridView1 <asp:GridView ID="GridView1" runat="server"></asp:GridView ...

随机推荐

  1. 你很牛B,面试却没过,为什么?

    点击标题下「飞测」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期 ...

  2. OpenGL: 渲染管线理论

    http://blog.csdn.net/augusdi/article/details/19934463 学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解. 首先要知 ...

  3. linux下OpenCV的安装配置

    1 安装cmake及一些依赖库 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavc ...

  4. MySQL(二)

    一.外键 外键是设置当前表中的某一列与别一数据表中的主键列关联.主要目的是控制与外键表中的数据,保持数据一致性,完整性,也就是说:当前表中这一列的数据必须是关联外键列中的某一数据,而且相关联的两个数据 ...

  5. 统计Crash工具—Crashlytics

    官网:https://www.crashlytics.com/login 步骤: 注意:有时候再次运行,或者换了Crashlytics账号之后,获取不到Crash信息,其实你需要把plist文件里的K ...

  6. Could not find action or result

    [WARN ] 2013-11-21 14:08:16 :Could not find action or resultThere is no Action mapped for namespace ...

  7. PAT1030. Travel Plan

    //晴神模板,dij+dfs,貌似最近几年PAT的的图论大体都这么干的,现在还在套用摸板阶段....估计把这及格图论题题搞完,dij,dfs,并查集就掌握差不多了(模板还差不多)为何bfs能自己干出来 ...

  8. openStack reboot调试

  9. Windbg 线程状态笔记

    1.ntdll!ZwWaitForSingleObject 线程被挂起,如果下面跟着是这样子: RetAddr : Args to Child : Call Site `7766e518 : `fff ...

  10. OpenGL函数解析之glLoadIdentity()

    函数原型:void glLoadIdentity(void) 函数说明:调用glLoadIdentity()函数可以恢复初始坐标系,用一个4x4的单位矩阵来代替当前矩阵,实际上就是对当前矩阵进行初始化 ...