减轻网站表单用户的数据输入

分享于 

11分钟阅读

Web开发

  繁體 雙語

激励

一个 DropDownList 控件在许多web窗体中是相当常见的。 通过标准化输入,便于开发人员映射到显示的文本来实现业务功能。 但是,通常情况下,用户可以制作的选择数量远远超过了用户所用的选择数量。 例如企业可能在应用程序中配置了许多部门,但是任何特定用户可能只需要使用一个或者两个部门。 或者,在时间跟踪应用程序中输入时间时,应用程序中定义的任务将比任何单个应用程序所要求的任务都要多。 或者,在对人力资源进行请求时,寻求的技术技能通常是在应用程序中定义的一小部分。 因这里,在平均情况下,用户会看到列出的项目,它的中没有用于。

这是一个确定的irritant,对于用户来说,尽管她不感兴趣的选择列表。 另一个irritant是屏幕上的实际地产不必要用完,模糊用户已经制作的它的他输入。 因这里,创建一个Web控件,在会话期间跟踪用户 Pattern,或者在会话中显示已经配置的列表项目。 我们有 UsageBasedDropDownList 控制。 我想把它叫做 SmartDropDownList 但是 desisted。 你会注意到它就是。 智能。

正常使用

你的网站表单的用户没有什么不同。 他从显示的列表中选取一个项目。 当用户从下拉控件中选择项时,它将维护选定列表项的使用统计信息并按降序排列。 用户通常会看到已经定义列表项的子集。 页开发人员/设计器配置控件应显示的项的数目,这称为建议的最佳列表项计数。 如果初始化了一个控件,则该控件在初始化列表中显示为0,并且该控件提供了用于获取其他列表项的属性的属性。 这里属性的默认值为'更多。',但它可以是开发人员所希望的任何内容。 如果在任何时候,列表中使用项的数量小于 4 ( 建议的最佳计数),则该控件将显示为 4项( 显示的几个项目可能使用零)。 另一方面,如果项的使用超出 4 ( 建议的最佳计数),则控件将显示所有使用数计数为 GREATER的项。

范例

假设下拉控件总共可以显示 10个列表项,并配置为显示 3个最常用的列表项。

初始显示

当初始化控件时,它将显示'item-1'。'item-2'。item-3'还有'更多。"。"。",因为没有使用统计信息和显示顺序。

初始选择

项名称用法
Item-10
Item-20
Item-30
更多。

更多用法

通常的行为是显示下拉列表顶部最使用的列表项,后面是较少使用的项,但仅限于列表项。 例如经过一段时间后,列表项具有如下使用统计信息:

项名称用法
Item-710
Item-38
Item-15
Item-93
Item-42

但是,在使用列表项在可用项之间均匀展开时,如果控件在单个用户会话或者应用程序中的使用次数大于0,则 UsageBasedDropDown 控件会显示所有的项。 基本上,未使用的项不会显示,除非用户专门请求它们。

开发者特性

几乎所有 UsageBasedDropDown 控件的行为特性都反映了标准 DropDownList 服务器控件的行为。 实际上,UsageBasedDropDown 控件扩展了 DropDownList 控件,以增强它的行为。 描述 below 是 UsageBasedDropDownList 控件的新属性和方法,开发人员可以通过它来实现增加的功能。

ModelId

ModelId 是开发人员以声明。编程或者通过 Visual Studio的属性浏览器窗口设置的属性。 DropDownList 控件有一个captive列表项 Collection,它用来构建包含 HTML select 元素的HTML option 元素。 由于 UsageBasedDropDownList 控件在定义范围内共享它的模型的原理,因此开发人员必须注意提供惟一的标识符。 例如,如果在网站中,多个web窗体包含下拉列表,用户可以识别企业部门。 尽管不同的用户对不同的部门有兴趣,但任何单个用户都会对部门的子集感兴趣。 如果 UsageBasedDropDownList的模型相应地作用于用户会话状态,则该控件的每个实例都可以引用该会话状态。 因此,当每个 UsageBasedDropDownList 控件访问模型时, Session("Departments") ,引用同一个对象。

注意 : 如果开发者选择为定义范围内的模型提供不同的id,那么 UsageBasedDropDownList 将创建单独的模型,尽管有相同的信息。

ListSize

ListSize 是开发人员以声明。编程或者通过 Visual Studio的属性浏览器窗口设置的属性。 这是建议的最佳列表大小,它决定了在控件下拉列表中必须显示的列表项数。 但是,UsageBasedDropDownList 将显示所有的列表项,它的使用计数为 GREATER,而不是 ListSize

作用域

Scope 是开发人员以声明。编程或者通过 Visual Studio的属性浏览器窗口设置的属性。 这里属性确定控件的模型的访问范围。 它既可以是基于会话的,也可以是基于。 如果要跟踪和控制单个用户使用模式,则将模型作为会话作为会话。 如果希望跟踪和控制应用程序的所有用户,则将模型应用于应用程序。

注意 : 控件在初始化模型之前检查指定范围内的模型是否存在。 记住为共享同一范围内相同信息的控件提供相同的ModelId

注意:开发人员必须确保适当地管理会话状态,特别是在用户会话过期时。 控件假定创建了用户会话。

ShowAllItemsText

ShowAllItemsText 是开发人员以声明。编程或者通过 Visual Studio的属性浏览器窗口设置的属性。 web控件的开发是将由下拉列表显示的项目数限制为用户所感兴趣的项目数量。 因此,列出感兴趣但当前未显示的列表项的可能性很高。 具有"更多。"类似文本的列表项为更多存在的用户提供了足够的信息,并且可以显示。 控件的增强行为之一是从模型中获取所有列表项,并在用户选择"更多。"时填充下拉列表。

项目

DropDownListItems 属性被重写,并且作为只读属性可用。 它返回一个 ListItemCollection 对象。 当前,UsageBasedDropDown 控件不提供以声明方式或者通过 Visual Studio的设计窗口列出所有项的功能。 列表项只能以编程方式设置。

注意 : 这个限制是,在一个应用程序中,很多页面将承载 UsageBasedDropDown 控件,共享相同的信息,如清单5 所示。 第一次通过web页面访问这些控件时,它在检查模型的存在之后构建模型。 而且,不知道哪个页面会首先被访问。

自动换行

AutoPostBackDropDownList web控件的属性,每次选择 DropDownList 中的选定项时,将把包含表单发送回服务器。 UsageBasedDropDownList web控件直接支持这里功能。 当这里属性设置为"' true "",控件将捕获 SelectedIndexChanged 事件以更新使用统计信息,并为包含页面打泡事件,以便开发人员。 通常,这里事件用于填充页中的依赖控件。 如果 AutoPostBack 属性设置为'"' false "",UsageBasedDropDownList web控件动态插入一个客户端JavaScript代码,以强制在用户选择 ShowAllItemsText("More...") 为了获取模型中的所有项目。

初始化

UsageBasedDropDownList web控件将接受 ListItemCollection 作为它的输入。 这里列表应包含所有可能显示在下拉列表中的值。 最初,下拉控件将根据 ListItemCollection 定义的顺序显示配置的列表项数目。

除了配置的列表项数,下拉控件还会显示列表项'更多。',指示用户有更多的元素。 如果用户选择名为'更多。'的列表项,下拉控件将显示模型中的所有项目,并且不会显示'更多。'列表项。

每次请求页面时,ASP.NET 引擎初始化请求的页和页的Controls Collection 中包含的控件。 由于一组 UsageBasedDropDownList 控件的模型是基于'作用域'属性共享的,因这里在构建模型之前,每个实例都检查模型的存在。 这里控件基于 ModelId 属性检查模型的实例。 如果希望web控件的不同实例包含相同的列表项,则必须确保将每个实例用相同的ModelId 实例初始化。


WEB  数据  for  USE  form  用户  
相关文章