c# – 如何通过用户控件公开ITemplate?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何通过用户控件公开ITemplate?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2256字,纯文字阅读大概需要4分钟。
内容图文
![c# – 如何通过用户控件公开ITemplate?](/upload/InfoBanner/zyjiaocheng/823/604b87548bcb428f97cf4ce38d5a2feb.jpg)
为了更轻松地创建表单,我们使用了用户控件中的修改后的Formview控件.此用户控件用于网格和FormView,您可以选择网格中的项目,FormView以模式显示以供查看/编辑:
<I2CL:Grid runat="server" ID="Grid" OnSelecting="Selecting" ShowCreate="true" />
<I2:Modal ID="SFModal" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<I2:FormView runat="server" ID="FVSubForm" DefaultMode="Edit" DataSourceID="DSSubForm" />
<I2:ILDataSource ID="DSSubForm" runat="server" />
</ContentTemplate>
</I2:Modal>
在页面中,控件如下所示:
<I2C:TabGrid ID="TG" runat="server" Property="ParentProperty">
<Columns>
<I2:Column Header="Column 1" DataSource="Column1" />
<I2:Column Header="Column 2" DataSource="Column2" />
</Columns>
<EditItemTemplate>
<I2Form:Dropdown ID="Col1" runat="server" SelectedValue='<%# Bind("Column1") %>' List="Column1Options" />
<I2Form:Textbox ID="Col2" runat="server" Text='<%# Bind("Column2") %>' />
</EditItemTemplate>
</I2C:TabGrid>
问题是我们使用的EditItemTemplate.我可以弄清楚如何连接它的唯一方法是在TabGrid控件中有一个ITemplate并在OnInit中应用引用:
[PersistenceMode(PersistenceMode.InnerProperty),
TemplateContainer(typeof(FormView))]
public ITemplate EditItemTemplate { get; set; }
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
FVSubForm.EditItemTemplate = EditItemTemplate;
}
这个问题是因为引用是用户控件中的一个对象,所以与FormView中的字典条目绑定更改的EditItemTemplate引用会被销毁,所以当你得到发送给数据源的更改字典时,它们就是每次回发都是空的.
这里使用的I2:ILDataSource是最接近ObjectDataSource的自定义实现.它不是通用对象调用,而是直接调用页面中的GetEntity()(或本例中的用户控件)和UpdateEntity(obj Entity)进行保存.由于这是一个非常具体的场景,我们可以消除ObjectDataSource中90%的代码.
我想要做的是指向< EditItemTemplate>在< I2C:TabGrid>中直接到< EditItemTemplate> of< I2:FormView>内.这是可能的,还是有人有其他路线的建议?
注意:我尝试将FVSubForm上的EditItemTemplate公开为代理属性,但这不起作用,因为在创建子控件之前在用户控件上设置了属性,因此FVSubForm为null.如果这可以解决,我当然都是耳朵.
解决方法:
您需要做的一件事是将您的ITemplate属性标记为支持双向数据绑定:
[TemplateContainer(typeof(FormView),System.ComponentModel.BindingDirection.TwoWay)]
如果没有这个,ASP.NET将不会为允许Bind()表达式工作的页面生成正确的代码.
我不确定你是否只需要这些,但这是值得尝试的.
大卫
内容总结
以上是互联网集市为您收集整理的c# – 如何通过用户控件公开ITemplate?全部内容,希望文章能够帮你解决c# – 如何通过用户控件公开ITemplate?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。