通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

数据访问和自定义

http://www.iyit.net  日期:2006-8-18 17:44:45  来源:  点击:
参加讨论模板控件介绍

虽然上一节中说明的 DataGrid 服务器控件对许多适于采用网格样式数据表示形式的 Web 应用程序方案很适合,但许多情况下,数据表示形式需要丰富得多。ASP.NET 提供两个控件 DataListRepeater,这两个控件为呈现列表样式的数据提供了更大的灵活性。这些控件基于模板,因此没有自己的默认呈现形式。数据的呈现方式完全取决于控件模板的实现,而控件模板描述如何表示数据项。

DataGrid 控件一样,DataListRepeater 也支持 DataSource 属性,该属性可设置为任何 ICollectionIEnumerableIListSource 类型。此 DataSource 中的数据通过其 DataBind 方法绑定到控件。绑定了数据后,每个数据项的格式都由模板描述。

ItemTemplate 属性控制 DataSource 集合中每一项的呈现形式。在 ItemTemplate 内,可以定义任何任意表示代码(HTML 或其他)。使用 ASP.NET 数据绑定语法,可以将数据绑定中的值插入 DataListRepeater 控件,如下例所示。

<ASP:Repeater id="MyRepeater" runat="server">

    <ItemTemplate>
        Hello <%# DataBinder.Eval(Container.DataItem, "name") %> !
    </ItemTemplate>

</ASP:Repeater>

Container 表示直接层次结构中支持 System.Web.UI.INamingContainer 标记接口的第一个控件。本例中,Container 解析为 System.Web.UI.WebControls.RepeaterItem 类型的对象,而该类型具有 DataItem 属性。当 Repeater 在 DataSource 集合上迭代时,DataItem 随之包含该集合的当前项。例如,如果将数据源设置为 Employee 对象的 ArrayList,则 DataItem 是 Employees 类型。当绑定到 DataView 时,DataItemDataRowView 类型。

下面的示例说明绑定到 DataView(从 SQL 查询返回的)的 Repeater 控件。还定义了 HeaderTemplateFooterTemplate,它们分别在列表的开头和末尾呈现。

 
VB DataList1.aspx

[运行示例] | [查看源代码]

Repeater 控件只是在绑定数据上迭代,为 DataSource 集合中的每一项呈现一次 ItemTemplate。除了其模板中包含的元素外,它不呈现任何内容。Repeater 是一个通用用途的迭代程序,而 DataList 提供了一些控制列表布局的附加功能。与 Repeater 不同,DataList 呈现模板定义外的其他元素(如表行及包含样式属性的单元格和跨距),以启用这种更丰富的格式设置。例如,DataList 支持 RepeatColumnsRepeatDirection 属性,这两个属性指定数据是否应在多列中呈现,以及数据项的呈现方向(垂直方向或水平方向)。DataList 还支持样式属性,如下例所示。

<ASP:DataList runat="server" DataSource="<%#MyData%>"
    RepeatColumns="2"
    RepeatDirection="Horizontal"
    ItemStyle-Font-Size="10pt"
    ItemStyle-Font-Name="Verdana"
>
    ...
</ASP:DataList>

注意:本节的其余部分集中描述 DataList 控件的许多功能。有关 Repeater 控件的更多信息,请参考本教程 Web 窗体控件引用一节中的 Repeater 主题。

下面的示例说明 DataList 控件的用法。注意上一示例中的数据项外观已更改,仅仅是通过更改控件的 ItemTemplate 属性的内容。RepeatDirectionRepeatColumns 属性确定 ItemTemplates 的布局。

 
VB Datalist2.aspx

[运行示例] | [查看源代码]

下面的示例通过再次更改 ItemTemplate 进一步说明模板的无限灵活性。这一次,DataItem 的一个值已替换为 <img> 标记的"src"属性。DataBinder.Eval格式 String 参数也已用于将查询字符串中的 DataItem 值替换为 URL。

 
VB Datalist3.aspx

[运行示例] | [查看源代码]


从模板处理回发

DataGrid 中一样,可以从 DataList 模板内激发传递到与 DataList 本身连接的事件处理程序的命令。例如,ItemTemplate 内的 LinkButton 可以激发 Select 命令。通过设置 DataListOnSelectedIndexChanged 属性,可以调用事件处理程序响应此命令。下面的示例说明此过程。

下面的示例说明此代码的运行。在 MyDataList_Select 事件处理程序中,用特定选定项的详细内容填充其他若干服务器控件。

 
VB Datalist4.aspx

[运行示例] | [查看源代码]

注意,虽然 DataList 识别少数特殊命令(如 SelectEdit/Update/Cancel),但是在模板内激发的命令字符串可以是任意字符串。对于所有命令都激发 DataListOnItemCommand。如前例所示,可以将该事件与处理程序连接。下面的示例说明如何完成此操作。

<script runat="server">

    Protected Sub MyDataList_ItemCommand(Sender As Object, E As DataListCommandEventArgs)
        Dim Command As String = E.CommandName

        Select Case Command
            Case "Discuss"
                ShowDiscussions(E.Item.DataItem)
            Case "Ratings"
                ShowRatings(E.Item.DataItem)
        End Select
    End Sub

</script>

<ASP:DataList id="MyDataList" OnItemCommand="MyDataList_ItemCommand" runat="server">

    <ItemTemplate>

        <asp:linkbutton CommandName="Ratings" runat="server">
            View Ratings
        </asp:linkbutton>
        |
        <asp:linkbutton CommandName="Discuss" runat="server">
            View Discussions
        </asp:linkbutton>

    </ItemTemplate>

</ASP:DataList>
C# VB JScript  

注意,因为可以有不止一个命令激发此事件处理程序,所以必须使用 switch 语句确定具体激发的命令。下面的示例说明此代码的运行。

 
VB Datalist5.aspx

[运行示例] | [查看源代码]


使用选择模板和编辑模板

除了使用页级别事件处理程序处理 Select 命令外,DataList 还可以在内部响应此事件。如果为 DataList 定义了 SelectedItemTemplate,则 DataList 为激发了 Select 命令的项呈现此模板。下面的示例使用 SelectedItemTemplate 使所选书的书名成为粗体。

 
VB Datalist6.aspx

[运行示例] | [查看源代码]

DataList 还支持一个 EditItemTemplate 来呈现索引等于 DataListEditItemIndex 属性的项。有关如何编辑和更新工作的详细信息,请参考本教程数据访问一节中的更新数据主题。

 
VB Datalist7.aspx

[运行示例] | [查看源代码]


查找模板内的控件

有时有必要查找模板内包含的控件。如果在模板中给控件赋予了一个 ID,则可以从其容器(父层次结构中支持 INamingContainer 的第一个控件)中检索此控件。本例中,容器是 DataListItem 控件。注意,即使若干控件具有同一 ID(由于 DataList 的重复),每个控件在逻辑上也包含在 DataListItem 容器控件的命名空间中。

可以在 DataListItems 集合中遍历以检索给定索引的 DataListItem,然后调用 DataListItemFindControl 方法(从基 Control 类继承)检索具有特定 ID 的控件。

<script runat="server">

    Public Sub Page_Load(sender As Object, E As EventArgs))
        ' set datasource and call databind here

        For I=0 To MyDataList.Items.Count-1
           Dim IsChecked As String =  MyDataList.Items(i).FindControl("Save").Checked.ToString()
           If IsChecked = "True" Then
             ...
           End If
        Next
    End Sub
</script>

<ASP:DataList id="MyDataList" runat="server">

    <ItemTemplate>
         <asp:CheckBox id="Save" runat="server"/> <b>Save to Favorites</b>
    </ItemTemplate>

</ASP:DataList>
C# VB JScript  

下面的示例说明此代码的运行。

 
VB Datalist8.aspx

[运行示例] | [查看源代码]

本节小结

  1. DataListRepeater 控件为开发人员提供了对呈现数据绑定列表的微调控件。
  2. 使用模板(如 HeaderTemplateFooterTemplateItemTemplate)控制绑定数据的呈现。
  3. Repeater 控件是通用用途的迭代程序,不在呈现中插入模板中不包含的任何内容。
  4. DataList 控件对项的布局和样式提供更多的控制,并为格式设置输出自己的呈现代码。
  5. DataList 支持 SelectEdit/Update/CancelItemCommand 事件。通过将事件处理程序与 DataListCommand 事件连接,可以在页级别处理这些事件。
  6. DataList 支持 SelectedItemTemplateEditItemTemplate 来控制选定项或可编辑项的呈现。
  7. 可以使用 Control.FindControl 方法以编程方式从模板检索控件。这应在从 DataList 的 Items 集合中检索的 DataListItem 上调用。

编辑: [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:服务器端数据访问
下一篇:没有了
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
数据访问和自定义
服务器端数据访问
数据绑定服务器控件
Web 窗体用户控件
服务器控件窗体验证
数据访问和自定义
QQ密码被盗怎么办!我教你找回密码
服务器端数据访问
数据绑定服务器控件
使用身份验证来禁止内部用户上网 
Web 窗体用户控件
服务器控件窗体验证
对控件应用样式
使用服务器控件
Web 窗体介绍
对控件应用样式
数据访问和自定义
服务器端数据访问
数据绑定服务器控件
Web 窗体用户控件
WIN XP蓝屏代码大全
MSN监听软件下载热 轻松监视局域网隐私
WinRAR将推出免费正版序列号!
让WinRAR汗颜的压缩软件UHARC
备份软件GHOST使用教程
[JAVA]十四种Java开发工具点评
初学java常用开发工具介绍
Win XP操作系统优化精髓
XP中重新安装或修复IE6的三种方法
轻易破解Winrar,Winzip密码
在ASP.net中保存/取出图片入/从SQL数据
一个.net 压缩位图至JPEG的代码
ASP.NET2.0数据库入门之常见错误
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
QQ密码被盗怎么办!我教你找回密码
使用身份验证来禁止内部用户上网 
Win Powershell遭遇病毒 最好升级软件
SiteAdvisor 助你远离恶意网站
提升流量 站长应该做的五件事
XP中重新安装或修复IE6的三种方法
XP下Asp.net访问被拒绝
教你封杀FSO躲避FSO木马的侵扰
让WinRAR汗颜的压缩软件UHARC
巧用Ghost擦去硬盘
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights ? 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息