ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbconintroductiontodatalistwebcontrol.htm
自己看看吧

解决方案 »

  1.   

    DataList Web 服务器控件以某种格式显示数据,这种格式可以使用模板和样式进行定义。DataList 控件对于显示数据行很有用。可以选择将 DataList 控件配置为允许用户编辑或删除信息。还可以自定义该控件以支持其他功能,如选择行。注意   若要精确地控制用于呈现列表的 HTML,请使用 Repeater Web 服务器控件。如果要包括自动分页和排序功能,请使用 DataGrid Web 服务器控件。有关更多信息,请参见在 Web 页上显示列表的控件。
    DataList 控件将数据行显示为列表中的项。可通过包括 HTML 文本和控件,使用模板定义项的布局。例如,可以在项中使用 Label Web 服务器控件显示数据源的字段。下面的章节介绍 DataList 控件的功能。将数据绑定到控件
    必须将 DataList 控件绑定到数据源。DataList 的典型数据源是数据集和数据读取器(OleDbDataReader 或 SqlDataReader 对象)。可以使用能够从工具箱添加到页的数据源,如 DataSet 或 DataView 类。还可绑定到在代码中创建的数据源,如数据读取器或数组。控件可以将任何支持 IEnumerable 接口的类用作数据源。当数据绑定时,可以为 DataList 控件整体指定一个数据源。在给此控件添加其他控件(例如,列表项中的标签或文本框)时,您还可以依次将它们绑定到容器,即 DataList 控件。有关更多信息,请参见 Web 窗体页中的数据访问。控件布局的模板
    在 DataList 控件中,使用模板定义信息的布局。注意   有关使用模板的概述,请参见 Web 服务器控件模板。
    具体请看ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbconIntroductionToDataListWebControl.htm
      

  2.   

    数据列表 DataList
    数据列表显示跟重复列表(Repeator)比较类似,但是它可以选择和修改数据项的内容。数据列表的数据显示和布局也如同重复列表都是通过“模板”来控制的。同样的,模板至少要定义一个“数据项模板”(ItemTemplate)来指定显示布局。数据列表支持的模板类型更多,它们如下:
    1) ItemTemplate模板,数据项模板,必需的,它定义了数据项极其表现形式。
    2) AlternatingItemTemplate模板,,数据项交替模板,为了使相邻的数据项能够有所区别,可以定义交替模板,它使得相邻的数据项看起来明显不同,缺省情况下,它和ItemTemplate模板定义一致,即缺省下相邻数据项无表示区分。
    3) SeparatorTemplate模板,分割符模板,定义数据项之间的分割符。
    4) SelectedItemTemplate模板,选中项模板,定义被选择的数据项的表现内容与布局形式,当未定义”SelectedItemTemplate”模板时,选中项的表现内容与形式无特殊化,由ItemTemplate模板定义所决定。
    5) EditItemTemplate模板,修改选项模板,定义即将被修改的数据项的显示内容与布局形式,缺省情况下,修改选项模板就是数据项模板(ItemTemplate)的定义。
    6) HeaderTemplate模板,报头定义模板,定义重复列表的表头表现形式。
    7) FooterTemplate模板,表尾定义模板,定义重复列表的列表尾部的表现形式。
    数据列表还可以通过风格形式来定义模板的字体、颜色、边框。每一种模板都有它自己的风格属性。例如,可以通过设置修改选项模板的风格属性来指定它的风格。
    此外,还有一些其他属性可以导致数据列表的显示有较大的改变,下面择重说明。
    RepeatLayout:显示布局格式,指定是否以表格形式显示内容。
    RepeatLayout.Table指定布局以表格形式显示。
    RepeatLayout.Flow指定布局以流格式显示,即不加边框。
    RepeatDirection:显示方向,指定显示是横向显示还是纵向显示
                RepeatDirection.Horizontal指定是横向显示
                RepeatDirection.Vertical指定是纵向显示
    RepeatColumns:一行显示列数,指定一行可以显示的列数,缺省情况下,系统设置为一行显示一列。这里需要注意的是,当显示方向不同时,虽然一行显示的列数不变,但显示的布局和显示内容的排列次序却有可能大不相同。
    例如:有10个数据需要显示,RepeatColumns设定为4,即一行显示4列时
    当RepeatDirection=RepeatDirection.Horizontal横向显示时,显示布局如下:
    Item1 Item2 Item3 Item4
    Item5 Item6 Item7 Item8
    Item9 Item10
    当RepeatDirection=RepeatDirection.Vertical纵向显示时,显示布局如下:
    Item1 Item4 Item7 Item10
    Item2 Item5 Item8
            Item3 Item6 Item9
    BorderWidth:当RepeatLayout=RepeatLayout.Table即以表格形式显示时,边框的线宽度
    Unit.Pixel(x) x>=0,当x为0时无边框
    GridLines: 当RepeatLayout=RepeatLayout.Table以表格形式显示时,在表格当中是否有网隔线分离表格各单元。
    GridLines=GridLines.Both,有横向和纵向两个方向的分割线。
    GirdLines=GridLines.None,无论横向还是纵向均无分割线。例子:演示以上介绍的各属性的设置对数据列表输出的影响,并且当数据项被选中时,数据项以粉红色来反显。1.源程序(DataList.aspx)
    <!--源文件:form\ServerControl\dataList.aspx-->
    <%@ Import Namespace="System.Data" %>
    <html>
    <script language="VB" runat="server">
    '创建初始化表和载入实验数据
        Function LoadData() As ICollection
            Dim dt As DataTable
            Dim dr As DataRow
            Dim i As Integer
            '创建数据表
            dt = New DataTable
            '建立数据项结构
            dt.Columns.Add(New DataColumn("Content", GetType(String)))
            '载入10个实验数据
            For i = 1 To 10
                dr = dt.NewRow()
                dr(0) = "Info " & i.ToString()
                dt.Rows.Add(dr)
            Next
            '为数据表建立一个数据视图,并将其返回
            LoadData = New DataView(dt)
        End Function
        Sub Page_Load(s As Object, e As EventArgs) 
            If Not IsPostBack Then
                DataList1.DataSource = LoadData()
                DataList1.DataBind
            End If
        End Sub
        Sub DataList1_ItemCommand(s As Object, e As DataListCommandEventArgs)
            Dim cmd As String = e.CommandSource.CommandName        If cmd = "select" Then
                DataList1.SelectedIndex = e.Item.ItemIndex
            End If
            
            DataList1.DataSource = LoadData()
            DataList1.DataBind   
        End Sub
    '当刷新按钮按下后,对数据列表属性重新设置
        Sub RefreshBtn_Click(s As Object, e As EventArgs) 
            If lstDirection.SelectedIndex = 0
                DataList1.RepeatDirection = RepeatDirection.Horizontal
            Else
                DataList1.RepeatDirection = RepeatDirection.Vertical
            End If        If lstLayout.SelectedIndex = 0
                DataList1.RepeatLayout = RepeatLayout.Table
            Else
                DataList1.RepeatLayout = RepeatLayout.Flow
            End If
            If chkBorder.Checked And DataList1.RepeatLayout = RepeatLayout.Table Then
                DataList1.BorderWidth = Unit.Pixel(1)
            Else 
                DataList1.BorderWidth = Unit.Pixel(0)
            End If
            
            If chkGridLines.Checked And DataList1.RepeatLayout = RepeatLayout.Table then
                 DataList1.GridLines = GridLines.Both
            Else
         DataList1.GridLines = GridLines.None
            End If
            DataList1.RepeatColumns=lstColsPerLine.SelectedIndex + 1
        End Sub
    </script>
    <head>
    <title>
    数据列表实验
    </title>
    </head>
    <body>
     <center>
     <h2>
     数据列表属性方法实验
     </h2>
        <form runat=server>
        <font face="Verdana" size="-1">
            <asp:DataList id="DataList1" runat="server"
                BorderColor="black"
                CellPadding="3"
                Font-Name="Verdana"
                Font-Size="8pt"
                HeaderStyle-BackColor="#aaaadd"
                AlternatingItemStyle-BackColor="#ccccff"
        SelectedItemStyle-BackColor="#ffccff"
                OnItemCommand="DataList1_ItemCommand"
                >
                  <template name="HeaderTemplate">
                  <h><center>内容</center></h>
                  </template>
                  <template name="ItemTemplate">
                    <asp:LinkButton id="DetailBtn" runat="server" Text="详细" CommandName="select" />
                    <%# DataBinder.Eval(Container.DataItem, "Content") %>
                  </template>
                  <template name="SelectedItemTemplate">
                   <%# DataBinder.Eval(Container.DataItem, "Content") %>已经被选中
                  </template>
            </asp:DataList>
            <p>
            <hr>
            显示方向:
            <asp:DropDownList id=lstDirection runat="server">
                <asp:ListItem>横向</asp:ListItem>
                <asp:ListItem>纵向</asp:ListItem>
            </asp:DropDownList>
            布局类型:
            <asp:DropDownList id=lstLayout runat="server">
                <asp:ListItem>表方式</asp:ListItem>
                <asp:ListItem>流方式</asp:ListItem>
            </asp:DropDownList>
            一行列数:
            <asp:DropDownList id=lstColsPerLine runat="server">
                <asp:ListItem>1列</asp:ListItem>
                <asp:ListItem>2列</asp:ListItem>
                <asp:ListItem>3列</asp:ListItem>
                <asp:ListItem>4列</asp:ListItem>
                <asp:ListItem>5列</asp:ListItem>
            </asp:DropDownList>
            边框显示: 
            <asp:CheckBox id=chkBorder runat="server" />
            网格显示:
    <asp:CheckBox id=chkGridLines runat="server" />
            <p>
            
            <asp:Button id=RefreshBtn Text="刷新界面" OnClick="RefreshBtn_Click" runat="server"/>
     
        </font>
        </form>
     </center>
    </body>
    </html>