首页 > 编程 > .NET > 正文

ASP.NET的Web controls

2024-07-10 13:11:55
字体:
来源:转载
供稿:网友

   web controls使创建forms 和html controls.的工作将会变得简单易行。例如在asp中典型的选择框/ select box里,你不得不创建一个循环以便让控制系统装入数据。但在asp.net里,你将会拥有一个"data-bound",这意味着它会与数据源连接,并会自动装入数据。
  
    这些功能听起来简直是妙不可言,但是让我们细细的来检验一下。通过传统的asp和ado,你能够选择在哪里放置数据库游标(服务器一边或是用户一边),至于其它的,是依靠你想要创建的性能和功能类型来做决定。但是在asp+里,你不再有选择。因为在web controls和服务器之间的 链接,迫使你不得不将所有的事物都放置在客户方。对于客户和服务器来说,不啻于一个性能中心,因为它必须将所有的数据存储在本地内存里。
  
    web controls 也在严格的xml 术语中引进了新的语法。因此,你会不再有比较松散的代码编辑过程,你必须关闭所有的标记符,使用定义等等。当然,大多数人对于适应这个功能会感到非常痛苦,但是严格的的代码编辑过程通常意味着更少的错误。
  
    另一方面关于web forms 缺陷在于,要想使用web form的大部分功能,你必须使用forms 的post 方法;例如,state 管理。当你使用get方法时,所有的all best 会被关闭掉,你就不能使用相应的功能。这个限制实在太没必要了。
  
    asp.net server controls
  
    许多系统过去的组成部分现在成为asp.net server controls。例如:ad rotator已升级,并开始用xml来存储它的信息,但不仅仅于此。这儿有一整套控制系统,它可以做任何事情,从代为管理你的表单状态到显示日历、桌面。事实上,几乎每html元素都有asp.net server controls,通过asp.net server control,可以与html元素程式化的相互影响。例如,你不再需要为了维持一个在listbox里选定的 option而大走弯路。你只需指示listbox 在服务器里运作并代你进行管理就可以了。更为方便的是,你只需设定好程序,listbox就会按指令依次显示选定的项目。

    也许在这个新的 controls中最有趣的莫过于 datagrid。datagrid是一个多列的数据绑定网格,通过它你可以轻而易举的将数据置于其中。它同时提供分页、排序等所有你所期望的功能。我们看一个datagrid的例子.
  
    注:我们将在另外的文章里介绍datagrid的属性和方法。
  
  $#@60;%@ page language="c#" src="datagrid.cs" inherits="sample atagridpage"%$#@62;
  ...
  
  $#@60;asp:datagrid runat=server id="titlesgrid"$#@62;
  $#@60;/asp:datagrid$#@62;
  
    上面的 .aspx 文件显示在不设置 datagrid 控件任何属性的情况下对其进行声明。
  
  datagrid.cs:
  
  namespace samples {
  ...
  
  public class datagridpage : page {
  protected datagrid titlesgrid;
  
  public icollection gettitleslist() {
  
  // 从在应用程序状态中高速缓存的 dataset 中检索标题列表。
  dataset titlesdataset = (dataset)application["titlesdataset"];
  
  if (titlesdataset != null) {
  return titlesdataset.tables["title"].defaultview;
  }
  else {
  return null;
  }
  }
  
  private void loadtitlesgrid() {
  
  // 从数据库中检索数据
  icollection titleslist = gettitleslist();
  
  // 设置控件的数据源
  titlesgrid.datasource = titleslist;
  
  // 并使它用此数据源构建其项目
  titlesgrid.databind();
  }
  
  protected override void onload(eventargs e) {
  base.onload(e);
  
  if (!ispostback) {
  
  // 首次请求此页
  loadtitlesgrid();
  }
  }
  }
  }
  
    记录丢失,对于程序员来说是一个非常严重的事情。在新的系统中, 中心对象是dataset。它与recordset相类似,是数据内在存储记忆的副本。dataset对于您的开发来说是中心所在,但是现在,我只能说它只是相近与xml,使程式在简单化和统一化的过程中,相对简单。你还是可以用你过去用过的来处理一切…(除了服务器端游标)…

国内最大的酷站演示中心!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表