asp.net中Repeater控件用法笔记
大家可能都对datagrid比较熟悉,但是如果在数据量大的时候,我们就得考虑使用
repeater作为我们的数据绑定控件了。Repeater控件与DataGrid
(以及DataList)控件的主要区别是在于如何处理HTML。ASP.NET建立HTML代码以显示DataGrid控件,但Repeater允许开发人员决定如何显示数据。所以,你可以选择将数据显示在一个HTML表格中或者一个顺序列表中。这主要取决于你的选择,但你必须将正确的HTML插入到
ASP.NET页面中。
模板与DataList一样,Repeater控件只支持模板。以下的模板可供选择:
AlternatingItemTemplate: 指定如何显示每一其它选项。
ItemTemplate:
指定如何显示选项。(AlternatingItemTemplate可以覆盖这一模板。)
HeaderTemplate:
建立如何显示标题。
FooterTemplate: 建立如何显示页脚。
SeparatorTemplate:
指定如何显示不同选项之间的分隔符。
你可以使用这些模板来显示你希望的数据。唯一具有强制性的模板是ItemTemplate,所有其它的模板都是具有选择性的。
对于处理一个数据源,Repeater控件具有与DataGrid与DataList相同的属性:
DataMember:获得或者设置与 Repeater 控件绑定的相应DataSource属性的表格。
DataSource:获得或者设置为 Repeater 显示提供数据的数据源。
除此之外,还有一个Items属性,你可以通过这一属性编程访问Repeater数据中单一选项。它返回一个RepeaterItemCollection对象,为一组RepeaterItem对象的集合,代表
Repeater 数据的每一行。
ASP.NET
Web数据控件还有其它一个共性:它们都使用DataBind方法来生成用户界面。调用这一方法可以返回并显示数据(假设DataSource和
DataMember属性设置正确)。在查看DataBind方法之前,我们先看看如何在一个Web页面中使用一个Repeater控件。
使用Repeater控件
使用Repeater控件的第一步骤是决定我们将要使用的数据源和字段。例如,我们将要使用SQL Server
Northwind数据库中的Employees列表。Web页面将显示职工的完整名字,地址,以及电话号码。HTML将使用DIV标记,用
Repeater 模板来分隔内容。下面是 Web 页面的 HTML 内容:
前台代码
代码如下 | 复制代码 |
<asp:Repeater ID="Repeater1"
runat="server"> |
后台代码
代码如下 | 复制代码 |
string sql =
string.Format("select
* from person"); DataTable dt = sqlhelper.helper.ExecuteQuery(sql); Repeater1.DataSource = dt; Repeater1.DataBind(); |
AspNetpager的使用方法:
首先注册<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
前台:
代码如下 | 复制代码 |
<webdiyer:AspNetPager
ID="AspNetPager1" runat="server"
CustomInfoHTML="第%CurrentPageIndex%页,共%PageCount%页,每页%PageSize%条" FirstPageText="首页" LastPageText="尾页" LayoutType="Table" NextPageText="下一页" onpagechanging="AspNetPager1_PageChanging" PageIndexBoxType="DropDownList" PagingButtonLayoutType="Span" PrevPageText="上一页" ShowCustomInfoSection="Left" ShowPageIndexBox="Always" SubmitButtonText="Go" TextAfterPageIndexBox="页" TextBeforePageIndexBox="转到" Width="450px" PageSize="3"> </webdiyer:AspNetPager> |
后台:
代码如下 | 复制代码 |
private void
AddPages(Repeater rpt,Wuqi.Webdiyer.AspNetPager anp,DataTable
dt) { PagedDataSource pds = new PagedDataSource(); pds.AllowPaging = true; pds.DataSource = dt.DefaultView; anp.RecordCount = dt.Rows.Count;//给分页控件指定当前总数 pds.PageSize = anp.PageSize;//确定分页,每页有n项 pds.CurrentPageIndex = anp.CurrentPageIndex - 1;//确定当前页数 rpt.DataSource = pds;//绑定数据源 rpt.DataBind(); } protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e) { AspNetPager1.CurrentPageIndex = e.NewPageIndex; BindPersonData(); } |
例子
repeater控件动态添加、删除一行
代码如下 | 复制代码 |
<script type="text/javascript"> //
//审批用户控件中保存发放的EquipmentId var
tempReturnValue =
""; |
Repeater:
代码如下 | 复制代码 |
<div id="div_Repeater"> |
后台:
代码如下 | 复制代码 |
/// <summary>
rptRequest.DataSource =
dt;
//for (int i = 0; i < dt_EquipmentRequestItem.Rows.Count;
i++)
//为第一行加载一些数据 ///
<summary> protected void
rptRequest_ItemCommand(object source, RepeaterCommandEventArgs
e)
//首先,恢复数据源
if (lblGuid.Text ==
((System.Web.UI.WebControls.Label)item.FindControl("lblGuid")).Text)
rptRequest.DataSource =
dt;
//首先,恢复数据源
rptRequest.DataSource =
dt; protected void
rptRequest_ItemDataBound(object sender, RepeaterItemEventArgs
e)
string sqlstr = @"select distinct b.TypeId,b.EquipmentName + ‘_‘ +
b.EquipmentType as
‘EquipmentName_EquipmentType‘
string sqlstr2 = @"select NodeId,Line + ‘_‘ + StationName as
‘Line_StationName‘ from V_Stations where status=‘1‘ order by
Line_StationName";
string businessNo =
Request["BusinessNo"].ToString();
if (dt.Rows.Count != 0 && dt.Rows[0]["LayerName"].ToString() ==
"资产管理员")
} |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。