首页 >> 读书频道 >> 电脑 >> 数据绑定技术
 
· 用C#创建PDA应用程序
· 事务处理
· 用C#实现在Word文档
· 表间关系
· C#编程实现在Excel
· 用VisualC#.NE
· 带输入参数
· 有返回值
· 存储过程
· 删除记录
· ADO.NET数据库基本
· 更复杂的Read
 
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

数据绑定技术


查看有无更新版本

关键字:ASP.NET 2006-9-20

 

3.6.1 简介
Repeater、DataList 、DataGrid控件是System.Web.UI.WebControls名空间(Namespace)里几个相关的页面组件。这些控件把绑定到它们的数据通过HTML表现出来,它们又被成为“列表绑定控件”(list-bound controls)。

和其他Web组件一样,这些组件不仅提供了一个一致的编程模型,而且封装了与浏览器版本相关的HTML逻辑。这种特点使得程序员可以针对这个对象模型编程,而无须考虑各种浏览器版本的差别和不一致性。

这三个控件具有把它们的相关数据“翻译”成各种外观的能力。这些外观包括表格、多列列表、或者任何的HTML流。同时,它们也允许你创建任意的显示效果。除此之外,它们还封装了处理提交数据、状态管理、事件激发的功能。最后,它们还提供了各种级别的标准操作,包括选择、编辑、分页、排序等等。利用这些控件,你可以轻松地完成如下的Web应用:报表、购物推车、产品列表、查询结果显示、导航菜单等等。

下面我们进一步讲解这些控件,其基本使用方法和如何选用它们。

3.6.2 列表绑定控件是如何工作
下面我们来看看列表绑定控件的属性和方法,从而一窥其内在工作机理。
3.6.2.1  DataSource属性
Repeater、DataList、DataGrid都是从System.Collections.Icollection继承来的,所以都带有DataSource属性。DataSource,最简单地讲,就是一组相同特征的对象或者一个相同对象的集合。

在ASP.NET 框架里,有许多对象都有DataSource属性。包括System.Data.DataView和ArrayList、HashTable等等。

和其他传统的需要ADO Recordset的数据绑定控件不同,这些列表绑定控件只需要实现其ICollection接口,而不必一定指定其DataSource属性。而且,由于其DataSource属性允许为很多数据类型和数据结构,从而使这些对象的引用更加简单和灵活。

例子1:下面我们以从服务器的SQL Server数据库pubs中取出作者信息,作为 三种控件Repeater、DataList、DataGrid的数据源为例,来说明以数据视图(DataView)作为数据源(DataSource)的方式。
 设计如下:在画面的上部有一选择列表(DropDownList)。当用户从中选取一种控件来显示数据时,它会根据选择,把隐藏在下部的3个画板之一显示出来。

1.以数据视图作为数据源方式的源程序

<!-- 文件名:code\database\FormDataSource.aspx -->

<!-- 文件名:FormDataSource.aspx -->

<%@ import namespace="system.data" %>
<%@ import namespace="system.data.sql" %>
<!--DataSet 要引用system.data,数据库连接要用到system.data.sql-->
<html>

<script language="vb" runat=server>

 sub Page_Load(o as object,e as eventargs)
  dim MyConnection as SQLConnection
  dim MyStr as String
  dim MyDataSetCommand as SQLDataSetCommand
  dim MyDataSet as New DataSet

  If Not IsPostBack

  MyConnection=New                        
SQLConnection("server=localhost;uid=sa;pwd=;database=pubs")
   '指定连接的服务器、用户、口令、数据库
  MyStr="Select au_lname,au_fname from authors"
   '要得到的数据为author表中的姓氏和名字
  MyDataSetCommand=New SQLDataSetCommand(Mystr,MyConnection)
  MyDataSetCommand.FillDataSet(MyDataSet,"Authors") 
   '从数据库中取得数据放入内存DataSet对象中,并映射为Authors表

  Session("MyDs")=MyDataSet
   '保存DataSet对象于连接变量MyDs中

  Else
     MyDataSet=Session("MyDs")
     '取出DataSet对象
     if MyDataSet is Nothing
      Response.Write("无法取得数据")
     else
          '根据选择列表的选择,绑定数据,并显示相应的画板
          Select Case DpDnLst.SelectedItem.text
      case "Repeater"
        Response.write _
  ("<center>以<I>Repeater</I>控件显示数据</center>")
        db1.datasource=MyDataSet.tables("authors").defaultview
        db1.databind
 
 panel1.visible=True
 panel2.visible=False
 panel3.visible=False
      case "DataList"
  Response.write _
  ("<center>以<B>DataList</B>控件显示数据</center>")
        db2.datasource=MyDataSet.tables("authors").defaultview
        db2.databind

 panel1.visible=False
 panel2.visible=True
 panel3.visible=False


      case "DataGrid"
        Response.write _
  ("<center>以<U>DataGrid</U>控件显示数据</center>")
        db3.datasource=MyDataSet.tables("authors").defaultview
        db3.databind

 panel1.visible=False
 panel2.visible=False
 panel3.visible=True

      case else
     End Select

    end if
  End If
 end sub
</script>
<head>
<title>
数据绑定技术试验
</title>
</head>

<body bgcolor=#ffffff>
 <center>
   <h2>DataSource试验</h2>
   <hr>

   <form runat=server>
   请选择控件类型: 
   <asp:DropDownList id="DpDnLst" runat=server>
     <asp:Listitem>Repeater</asp:Listitem>
     <asp:Listitem>DataList</asp:Listitem>
     <asp:Listitem>DataGrid</asp:Listitem>
   </asp:DropDownList>
     
   <asp:button text="提交" runat=server/>
   <hr>

   <!--定义三个画板,根据下拉列表的选择,使指定的画板可见-->

   <!-- 画板一 :定义一个Repeater控件 -->
   <asp:panel id="panel1" visible=false runat=server>
   <asp:repeater id="db1" runat=server>
      <!--定义Repeater控件显示的表头 -->
     <template name="headertemplate">
       <table>
         <tr>
          <td>
           姓氏
          </td>
          <td>
           名字
          </td>
         </tr>
     </template>

       <!--定义Repeater控件数据显示的格式 -->
      <template name="itemtemplate">
       <tr>
        <td>
         <%# databinder.eval(container.dataitem,"au_lname") %>
        </td>
        <td>
        <%# databinder.eval(container.dataitem,"au_fname") %>
        </td>
       </tr>
      </template>

       <!--定义Repeator控件显示的表尾 -->
      <template name="footertemplate">
        </table>
      </template>
     </asp:repeater>
    </asp:panel>

      <!-- 画板二:定义一个DataList控件 -->
    <asp:panel id="panel2" visible=false runat=server>
     <asp:datalist id="db2" runat=server>
        <!--定义datalist的显示格式为:姓氏----名字 -->
      <template name="itemtemplate">
       <%# databinder.eval(container.dataitem,"au_lname") %>
       ----
       <%# databinder.eval(container.dataitem,"au_fname") %>
       <br>
      </template>
     </asp:datalist>
    </asp:panel>

     <!-- 画板三:定义一个DataGrid控件 -->
    <asp:panel id="panel3" visible=false runat=server>
     <asp:datagrid id="db3" runat=server>
     </asp:datagrid>
    </asp:panel>

  </form>
 </center>
</body>
</html>

数据绑定技术

[ 1 ]
数据绑定技术 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑