数据绑定控件和XmlDataSource控件结合使用,通过后台绑定Xml数据片段遇到的问题
由于之前一直在从事管理的工作,比较长一段时间没有写Asp.net的页面展现和控制逻辑了,今天准备赶一个开发进度时候,在需要使用数据绑定控件和XmlDataSource控件时遇到了一点小问题。由于当前的XmlDataSource控件的数据源不能直接通过指定文件的形式来绑定,所以考虑在后台通过动态绑定来实现。结果没有想到一个小功能尽然弄了快2个小时,汗!~以下是我遇到的问题,做个记录:
项目中需要做一个页面的列表展现,于是我就直接使用了一个ListView控件作为数据绑定控件,在提供的数据行中有一个字段在数据库中是Xml类型的字段,这个字段存储着一个内部的子结构。 在列表展现的时候需要把这个子结构也一起按某种约定的样式呈现出来。于是我就考虑了在ListView的模板列中嵌套了一个Repeater控件,用来呈现这个子结构;并且考虑这个数据源是Xml结构的,因此我想到需要使用一个XmlDataSource控件来做辅助解析。结果问题就来了。首先在页面上我给Repeater控件的DataSourceId指定为XmlDataSource的控件Id,而XmlDataSource的数据通过在后台ListView控件的ItemDataBound事件来动态指定。结果一测试发现竟然抛出“未将对象引用设置到对象的实例”错误,通过异常信息发现在XmlDataSource控件加载Xml数据的时候出错了,为什么会这样呢?最后发现如果在页面中给数据绑定控件(如Repeater等)指定了DataSourceId,而XmlDataSource定数据是在这个数据绑定控件的ItemDataBound事件中动态指定的就会发生这个异常。于是我就把页面中的DataSourceId指定去掉了;换成在ItemDataBound事件中给XmlDataSource赋完Data属性后再指定控件的DataSourceId属性。调试运行一下没有异常了,但好像数据出不来,怎么回事呢?可能是Xml的XPath写的不对,仔仔细细查看了许多遍都没有发现自己写错了呀!靠!!!难道碰到鬼了。MD死马就当活马医了,不会是在这个Repeater控件上还要调用DataBind方法,反正试试总不会损失什么的,结果一试竟然可以显示了。册那~问题终于解决了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述