下载实例 简介 当创建数据驱动的Web站点时,Web开发人员遇到的最常见的任务之一就是创建数据输入窗体。">
简介 当创建数据驱动的 web 站点时,web 开发人员遇到的最常见的任务之一就是创建数据输入窗体.数据输入窗体是为系统用户提供数据输入方法的 web 页.创建特定数据输入窗体的任务通常应该先从需求分析入手,即,明确指出需要从用户收集何种信息.需求确定之后,下一步是设计数据输入 web 窗体,包括创建图形用户界面以及编写根据用户输入更新数据库的代码. 当数据输入窗体需求事先已知,并且此数据输入窗体对系统中所有用户都一样时,创建这样的输入窗体就毫无挑战性.然而,如果需要动态的数据输入窗体,任务就会变得更艰巨.例如,考虑一个公司的 internet web 应用程序,其目的是收集客户购买的产品的信息;一种产品在线注册系统.对于这样的应用程序,向用户提出的问题可能会因购买不同产品而异,或者因从店铺购买还是从公司 web 站点购买而异. 如上面提到的例子,当遇到需要提供动态数据输入用户界面时,一种选择可能是“强加”一种解决方案.您可以为公司销售的每种产品创建独立的 web 页,每张页面包含需要的特定数据输入元素.这种原始方法的问题是当发布新产品时,就需要添加新的页面.虽然创建这些新页面可能不会很困难,但是却很耗时,而且如果没有充分的调试与测试时间就很容易出错. 理想情况下,当发布新产品时,应由某个非技术人员通过易用的.基于 web 的界面来指定需要提出什么问题.这样的系统对 asp.net 来说是可以实现的,因为它具备在运行时往 asp.net web 页动态加载控件的能力.只需要在开发与测试时投入少量的初期投资,您就可以创建一个可重复使用的.动态的数据输入用户界面引擎.即使对计算机了解甚少的用户,通过这种技术都可以轻松地创建自定义数据输入窗体.在本文中,我们会介绍使用 asp.net 中的动态控件的基础知识,然后介绍一个完整的.可运转的动态数据输入系统,可以轻松地对它进行自定义与扩展. asp.net 中的动态控件入门 众所周知,asp.net web 页由两部分组成: ? html 部分,它包含静态的 html 标记与 web 控件,通过声明性语法来添加. ? 代码部分,可以作为独立的类文件实现(如采用 visual studio .net),或者包含在 html 文件的 <script runat="server"> 块中. asp.net web 页的 web 控件是在设计时通过声明性语法来添加的,它明确指出了要添加的 web 控件及其初始属性值,如: 【推荐阅读:solidworks二次开发-04-修改】
aspx?id=241" target="_blank">下载实例
<asp:webcontrolname runat="server" prop1="value1" prop2="value2" ... propn="valuen"> </asp:webcontrolname>要理解的一个重点是,当第一次访问 asp.net 页面,或者当其 html 部分修改后第一次访问时,asp.net 引擎会自动将混合的静态 html 内容与 web 控件语法转换成一个类.这个自动生成的类的作用是创建控件层次结构.这个控件层次结构是组成页面的控件集 — 静态的 html 标记转换成 literalcontrol 实例,而 web 控件转换成相应类类型的实例(例如, 转换成 system.web.ui.webcontrols 命名空间中的 textbox 类的实例). 之所以称为控件层次结构是因为它是控件的真正的层次结构.每个 asp.net 服务器控件可以有一组子控件与一个父控件.当自动生成的类构造控件层次结构时,它会将代表 asp.net 页面的 page 类实例放在层次结构的顶层.page 类的子控件是那些在页面的 html(通常是一些静态的 html 标记以及 web 窗体的服务器控件)中定义的顶级服务器控件.(asp.net 页面的 web 窗体 — 也就是 <form runat="server">标记 — 是作为 htmlform 类的实例实现的,可以在 system.web.ui.htmlcontrols 命名空间中找到这个类.) 与任何其他服务器控件一样,这个 web 窗体可以包含子控件.web 窗体的子控件是那些在该 web 窗体本身中发现的控件.甚至 web 窗体中的控件本身还可能有子控件:panel 控件的内容构成了其子控件;当将数据绑定到一个 datagrid 时,产生的内容构成了它的子控件集.因为顶级 page 类可能有子控件,子控件又有子控件,子控件又有子控件,等等,这组控件就构成了控件层次结构. 为了帮助彻底理解这个概念(理解它对使用动态控件是至关重要的),请想象您有一个 asp.net 页面,它在 html 部分有以下内容: <html> <body> <h1>welcome to my homepage!</h1> <form runat="server"> what is your name? <asp:textbox runat="server" id="txtname"></asp:textbox> <br />what is your gender? <asp:dropdownlist runat="server" id="ddlgender"> <asp:listitem select="true" value="m">male</asp:listitem> <asp:listitem value="f">female</asp:listitem> <asp:listitem value="u">undecided</asp:listitem> </asp:dropdownlist> <br /> <asp:button runat="server" text="submit!"></asp:button> </form> </body> </html>当第一次访问该页面时,会自动生成一个类,这个类包含以编程方式构建控件层次结构的代码.这个示例的控件层次结构如图 1 所示. 图 1. 控件层次结构以编程方式使用控件层次结构 正如前面提到的,每个 asp.net 服务器控件可以包含一组子控件与一个父控件.子控件可通过类型为 controlcollection 的服务器控件的 controls 属性访问.... 下一页