带有对optgroup元素支持的DropDownList

分享于 

5分钟阅读

Web开发

  繁體 雙語

介绍

最近我发现很多程序员不能在. NET 框架选择控件中使用选项组的功能。 之后,我决定编写自己的控件,这与 the.NET 框架中可用的System.Web.UI.DropDownList 控件类似。 我的控件可以用于. NET 框架 2.0或者更高版本。

背景,W3推荐

使用 DropDownGroupableList 控件时,请记住与W3联盟定义的选项组和选项项相关的限制。 请参见本文中的 优秀的网站程序员不仅通过程序代码的有效性来定义:- )

数据源类型

可以通过四种不同的方式交付数据:

  • 以计的内联项目
  • 注:这允许你指定选项组以及选项项。

  • 手动填写代码中的Items 集合。
  • 注意:注意 Items 集合公开的AddItemAddGroup 方法。

  • 包含有效费用的DataSource 属性,包含有效的 IEnumerable 数据。
  • DataSourceID 属性引用的控件提供的声明性数据源。

提供的数据,声明性或者手动通过 DataSource 属性可以处理正常的方式,或者层次。

分层数据源支持

如果提供的数据源实现 IHierarchicalEnumerable,那么根据数据处理,DropDownGroupableList的工作方式会稍有不同。 它基于选项组和项一起表示某种层次层次结构的理论。

你可以通过以下设置控制分层数据处理:

  • IgnoreFirstBoundParent - 这指示列表控件应该忽略第一个绑定的父对象,并绑定其子对象。 这意味着第一个父节点是真正绑定的数据的root。 这在绑定具有一个 root 节点的站点地图时很有用,该节点不包含 inside 站点导航。 默认值为 false
  • BindEmptyParentAsListItem - 这里设置控制如何处理空父级。 通常有两种处理空父级的方法: 创建没有子选项( 那就无法选择)的选项组,或者创建可以选择的选项项。 默认值为 true
  • 收费为 DataGroupTextFieldDataGroupTextFormatStringDataGroupIDField 与来自 DropDownList的已知属性相似,但引用的是选项组属性。

常用属性

如果你熟悉 System.Web.UI.WebControls.DropDownList 控制( 当你阅读这篇文章的时候),你可能知道它的功能和行为。 下面列出了我的控件与标准 DropDownList 共同使用的一些重要功能和常用功能:

  • AppendDataBoundItems - 指定在绑定数据之前是否清除 Items 集合的值。
  • AutoPostBack - 在选定项更改后将表单发送回服务器。
  • CausesValidationValidationGroup - 共同工作以确保控件的有效性
  • DataTextFieldDataValueField - 包含 Text 属性值或者 Value 属性值的绑定对象属性的名称。
  • 当选定项发生更改时发生 SelectedItemChanged ;注意这里事件与选项组不相关,因为它们不能被选择。

标准控件的区别

SelectedValue

将属性 SelectedValue的值设置为对应于多个项(。比如,你插入了多个具有相同值的项)的值时,会引发异常。

ListItem.Enabled

System.Web.UI.WebControls.ListItem 类的Enabled 属性影响它的在页上的可见性。 我决定更改这里行为,因此将这里值设置为 false 使它通过禁用的HTML属性禁用,但仍在渲染。

项集合

这个集合定义与由 OptionListItemOptionGroupItem 类实现的抽象 OptionItemBase 类一起工作。 这使得列表控件可以包含选项项以及顶级选项组。 然后 OptionGroupItem 类只能包含 OptionListItem 类实例,因为它不是W3建议的一部分,所以不允许内部组。

样例

附加的压缩文件包含以下示例页面:

  • DynamicDataSource.aspx - 演示从后面的代码中动态填充。
  • InlineDataDefinition.aspx - 演示 inline Items 定义。
  • HierarchicalDataSource.aspx - 显示分层数据源功能的功能。

结束语

我为创建和调试这个组件花了很多时间,所以我希望它对所有 ASP.NET 程序员都有帮助。 你可以随意使用它:- )


相关文章