问题标签 [ibindabletemplate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 自定义模板化 asp.net 控件的双向数据绑定
这个问题最初是关于让双向绑定工作的,但由于缺乏具体的答案和其他方面的进展,我一直在更新它 - 你可以检查编辑历史,但我认为这对明晰。
下面的代码清单允许将单个对象双向数据绑定到模板化控件。我想以最简单的方式扩展此示例,以允许为最根对象的复杂类型属性嵌套类似的支持双向数据绑定的模板化控件。例如,SampleFormData
有一个属性List<string> Items
。我希望能够在最根模板(来自此代码清单)中绑定到此列表,并在可编辑的文本框列表中显示字符串数据,也许,使用插入、删除、重新绑定输入的命令-changes(回到绑定对象的 List 属性)。此外,如果这是一个复杂类型的列表(SampleFormChildData
,而不是字符串),一个新的嵌入SampleSpecificEntryForm
可以在列表中使用,绑定到列表的每个项目,如中继器。依此类推,一直到叶简单属性,如果作者愿意的话。ui 字段不需要自动生成,仅可用于绑定。
注意: 的情况List<string>
很特殊,因为即使是内置绑定也不能直接将字符串作为 DataItem 处理 - 直接将字符串作为列表中的项目绑定不是必需的,但肯定很有价值。
这与 a 不同,FormView
因为它不是为期望绑定到项目列表中的一个而构建的,而只是绑定到视图状态中或任何地方持久存在的单个项目。与 FormView 不同,它只有一个类似于 FormView 的 EditTemplate 的默认模板。同样,绑定到类似集合的属性也只有一个视图 - 编辑。没有选择行然后编辑。一切都是可编辑的。目的是使双向绑定表单更易于构建。
在我看来,应该有两种绑定。 SingleEntityBinding
和CollectionBinding
。 将单个对象实例SingleEntityBinding
作为数据源(由 任何一种类型都应该支持任何一种类型的嵌套。列表操作,例如对支持对象数据的插入/更改/删除类型操作是表单作者的责任;然而,这种机制实施起来相对简单。SampleSpecificEntryForm
CollectionBinding
SingleEntityBinding
DataSourceID="EntryForm1" DataMember="Items"
DataList1
这是一些代码,希望对某人有所帮助。有 200 分可以为实现这一既定目标的最佳建议提供...
使用 ASP.NET 页面如下:
Default2.aspx.cs:
我也实现了 IDataSource,试图能够像这样嵌套一个列表组件(在 内):
关于如何以级联方式进行这项工作的任何想法都会很棒(例如,在 Items 列表属性上)。这里的挑战之一是 Bind() 不能引用数据绑定对象本身(在本例中为字符串),而是引用该项目的属性 - 使得绑定到列表很尴尬。
谢谢你的帮助!
一路上的发现
实现了 IDataItemContainer。我非常希望这会解决它,但没有。没有明显变化。 糟糕,在错误的类上实现了它。现在它是绑定,但值不会在回发时反弹到绑定对象。嗯……
正如本文所建议的那样,Page.GetDataItem() 是异常的来源。如果页面的 _dataBindingContext 为 null 或为空,则会引发此异常。文章确实解释了这一点,但没有说明如何确保填充 Page 的 _dataBindingContext。我会继续寻找。
正如 MSDN 文档所说,DataBoundControl 应该实现 PerformDataBinding 而不是覆盖 DataBind()。我已经这样做了,并且做了双向绑定工作。这段代码是必要的还是我应该使用内置的东西?
c# - 表单视图和外部 IBindableTemplate
我想在我的自定义 FormView 控件中设置一个用于编辑/插入和查看的模板。但我得到了这些奇怪的例外
Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.WebControls.Table'.
编辑:
在第一步中,我创建了新的用户控件并添加了一个表单视图(“FV”)
现在,我想将此用户控件转换为 Web 控件。
如果您能回答我的问题,我将不胜感激。
xamarin.forms - 如果绑定数组没有项目,则隐藏 Xamarin 表单 StackLayout
在我的 Xamarin Forms 应用程序中,我有一个 CarouselView 来浏览消息。有些邮件有附件。当附件列表没有项目时,我想隐藏 StackLayout 附件布局。
我试图玩 DataTriggers 但它不起作用。