Asp.net webform中使用LoadControl 和LoadTemplate的区别
这个内容放在今天这个时间点,显得有点无用,不过只是做一个记录吧。
最近需要修改比较旧的一 个系统,需要实现动态DataGrid列的绑定的功能。
其中有一列需要用到一个自己的Label,外加系统的其它用户控件。
一开始在自定义的Itemplate中,New一个用户控件类的,发现没有用,数据都执行了,但是没有数据出现在页面上。
后来发现需要使用LoadControl来动态加载,但发现这东西只出现在最后一行中才会有数据。据有人说是缓存的问题。具体没有去研究。
本来想绕过这个自定义控件的,但是页面中这个控件需要JS打开一个新窗口,传递的参数比较复杂,如果直接传入,需要转码,而转码在后端和前端有时候会不好控制,或者太过麻烦,后来想还是定义使用已经成熟的控件去实现更好一些。
后来查到了LoadTemplate这个方法,其实两者之间是有一 些比较细的差别的,最主要的意思是,LoadTemplate加载的只是模版,不会立马初始化,并设置模版内控件没有BindingContainer属性(使用的是所属Container,如DataGrid的数据源做为绑定数据源),绑定数据的时候,数据源会传给模版中的Container.DataItem属性,来表示当前行,而LoadControl会初始化该控件内的对象控件实例,绑定的时候,Container.DataItem指的是用户控件本身的DataItem属性 ,这有可能是不存在的,也就是说,在绑定的时候Container指向不同:
LoadControl BindingContainer --> UserControl's DataSource
LoadTemplate BindingContainer --> Template Container's DataSource
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报