aspnet中repeater控件用法笔记.docx
- 文档编号:24275661
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:17
- 大小:19.46KB
aspnet中repeater控件用法笔记.docx
《aspnet中repeater控件用法笔记.docx》由会员分享,可在线阅读,更多相关《aspnet中repeater控件用法笔记.docx(17页珍藏版)》请在冰豆网上搜索。
aspnet中repeater控件用法笔记
大家可能都对datagrid比较熟悉,但是如果在数据量大的时候,我们就得考虑使用repeater作为我们的数据绑定控件了。
repeater控件与datagrid(以及datalist)控件的主要区别是在于如何处理html。
建立html代码以显示datagrid控件,但repeater允许开发人员决定如何显示数据。
所以,你可以选择将数据显示在一个html表格中或者一个顺序列表中。
这主要取决于你的选择,但你必须将正确的html插入到页面中。
模板与datalist一样,repeater控件只支持模板。
以下的模板可供选择:
alternatingitemtemplate:
指定如何显示每一其它选项。
itemtemplate:
指定如何显示选项。
(alternatingitemtemplate可以覆盖这一模板。
)
headertemplate:
建立如何显示标题。
footertemplate:
建立如何显示页脚。
separatortemplate:
指定如何显示不同选项之间的分隔符。
你可以使用这些模板来显示你希望的数据。
唯一具有强制性的模板是itemtemplate,所有其它的模板都是具有选择性的。
对于处理一个数据源,repeater控件具有与datagrid与datalist相同的属性:
datamember:
获得或者设置与repeater控件绑定的相应datasource属性的表格。
datasource:
获得或者设置为repeater显示提供数据的数据源。
除此之外,还有一个items属性,你可以通过这一属性编程访问repeater数据中单一选项。
它返回一个repeateritemcollection对象,为一组repeateritem对象的集合,代表repeater数据的每一行。
web数据控件还有其它一个共性:
它们都使用databind方法来生成用户界面。
调用这一方法可以返回并显示数据(假设datasource和datamember属性设置正确)。
在查看databind方法之前,我们先看看如何在一个web页面中使用一个repeater控件。
使用repeater控件
使用repeater控件的第一步骤是决定我们将要使用的数据源和字段。
例如,我们将要使用sqlservernorthwind数据库中的employees列表。
web页面将显示职工的完整名字,地址,以及电话号码。
html将使用div标记,用repeater模板来分隔内容。
下面是web页面的html内容:
前台代码
代码如下:
<asp:
repeaterid=repeater1runat=server>
<headertemplate><tablecellpadding=0cellspacing=0border=1align=centerclass=auto-style1>
<tralign=left>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>班级</th>
<th>零花</th>
</tr>
</headertemplate>
<itemtemplate>
<tr>
<td><%#eval(id)%></td>
<td><%#eval(name)%></td>
<td><%#eval(age)%></td>
<td><%#eval(classid)%></td>
<td><%#eval(salary)%></td>
</tr>
</itemtemplate>
<footertemplate></table></footertemplate>
</asp:
repeater>
后台代码
代码如下:
stringsql=string.format(select*fromperson);
datatabledt=sqlhelper.helper.executequery(sql);
repeater1.datasource=dt;
repeater1.databind();
aspnetpager的使用方法:
首先注册<%@registerassembly=aspnetpagernamespace=wuqi.webdiyertagprefix=webdiyer%>
前台:
代码如下:
<webdiyer:
aspnetpagerid=aspnetpager1runat=servercustominfohtml=第%currentpageindex%页,共%pagecount%页,每页%pagesize%条
firstpagetext=首页lastpagetext=尾页layouttype=tablenextpagetext=下一页
onpagechanging=aspnetpager1_pagechangingpageindexboxtype=dropdownlist
pagingbuttonlayouttype=spanprevpagetext=上一页showcustominfosection=left
showpageindexbox=alwayssubmitbuttontext=gotextafterpageindexbox=页
textbeforepageindexbox=转到width=450pxpagesize=3>
</webdiyer:
aspnetpager>
后台:
代码如下:
privatevoidaddpages(repeaterrpt,wuqi.webdiyer.aspnetpageranp,datatabledt)
{
pageddatasourcepds=newpageddatasource();
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();
}
protectedvoidaspnetpager1_pagechanging(objectsrc,wuqi.webdiyer.pagechangingeventargse)
{
aspnetpager1.currentpageindex=e.newpageindex;
bindpersondata();
}
例子
repeater控件动态添加、删除一行
代码如下:
<scripttype=text/javascript>
vartxtequipmentidsidarray=newarray();
functionopenwindow(clientid,typeid,reqnum){
varurl=../equipmentissue/equipmentrequestissue.aspx?
typeid=+typeid+&reqnum=+reqnum;
varwidths=600;
varheigths=450;
varwinpar=window.showmodaldialog(url,window,'dialogwidth='+widths+'px;dialogheight='+heigths+'px;status=no;center=yes;scroll=no;help:
no;');
if(winpar!
=undefined){
vartxtequipmentids=document.getelementbyid(clientid);
txtequipmentids.value=winpar;
////审批用户控件中保存发放的equipmentid
//varisexistequipmentidsid=false;
//for(vari=0;i<txtequipmentidsidarray.length;i++){
//if(txtequipmentidsidarray[i]==clientid){
//isexistequipmentidsid=true;
//}
//}
//if(isexistequipmentidsid==false){
//txtequipmentidsidarray.push(clientid);
//}
//vartempequipmentid=;
//for(vari=0;i<txtequipmentidsidarray.length;i++){
//tempequipmentid=tempequipmentid+document.getelementbyid(txtequipmentidsidarray[i]).value;
//varhiddenequipmentids=document.getelementbyid(uc_approvalaction1_hfequipmentids);
//hiddenequipmentids.value=tempequipmentid;
//}
////alert(hiddenequipmentids.value);
}
vartempreturnvalue=;
vartb_request=document.getelementbyid(tb_request);
vartr=tb_request.getelementsbytagname(tr);
for(vari=0;i<tr.length;i++){
if(tr[i].id!
=){
varspan_equrequestitemid=tr[i].getelementsbytagname(span);//获取申请明细的idequrequestitemid
varselect_ddlstation;//获取使用工位stationid
varoption=tr[i].getelementsbytagname(select)[1].getelementsbytagname(option);
for(varj=0;j<option.length;j++){
if(option[j].selected)
{
select_ddlstation=option[j]
}
}
vartextarea_equipmentids=tr[i].getelementsbytagname(textarea);//获取发放的资产号equipmentno
tempreturnvalue=tempreturnvalue+span_equrequestitemid[0].innertext+:
+select_ddlstation.value+:
+textarea_equipmentids[0].innertext+|;
}
}
varhiddenequipmentids=document.getelementbyid(uc_approvalaction1_hfequipmentids);
hiddenequipmentids.value=tempreturnvalue;
//alert(hiddenequipmentids.value);
}
</script>
repeater:
代码如下:
<divid=div_repeater>
<asp:
hiddenfieldid=hfrptcolumnsrunat=servervalue=guid,equrequestitemid,equipmenttype,station,equipmentnum,equipmentids/>
<tableid=tb_requestcellpadding=1cellspacing=0width=100%style=background-color:
#dfe8f6;font-size:
12px;padding:
10px;>
<thead>
<tr>
<th>序号</th>
<th>明细编号</th>
<th>
资产类型
</th>
<th>
使用工位
</th>
<th>
申请数量
</th>
<th>
发放的资产号<fontcolor=red>(资产管理员填写)</font>
</th>
</tr>
</thead>
<tbody>
<asp:
repeaterid=rptrequestrunat=serveronitemcommand=rptrequest_itemcommand
onitemdatabound=rptrequest_itemdatabound>
<itemtemplate>
<trid=tr_request>
<td>
<%#container.itemindex+1%>
<asp:
labelid=lblguidrunat=servertext='<%#eval(guid)%>'visible=false></asp:
label>
</td>
<td><asp:
labelid=lblequrequestitemidrunat=servertext='<%#eval(equrequestitemid)%>'></asp:
label></td>
<td>
<asp:
dropdownlistid=ddlequipmenttyperunat=server></asp:
dropdownlist>
<asp:
labelid=lblequipmenttyperunat=servertext='<%#eval(equipmenttype)%>'visible=false></asp:
label>
</td>
<td>
<asp:
dropdownlistid=ddlstationrunat=server></asp:
dropdownlist>
<asp:
labelid=lblstationrunat=servertext='<%#eval(station)%>'visible=false></asp:
label>
</td>
<td><asp:
textboxid=txtreqequipmentnumrunat=servertext='<%#eval(equipmentnum)%>'></asp:
textbox></td>
<td><asp:
textboxid=txtequipmentidsrunat=servertext='<%#eval(equipmentids)%>'textmode=multiline></asp:
textbox></td>
<td><asp:
buttonid=btnaddrowrunat=servertext=新增一行commandname=add/>
<asp:
buttonid=btndeleterowrunat=servertext=删除本行commandname=delete/></td>
</tr>
</itemtemplate>
</asp:
repeater>
</tbody>
</table>
</div>
后台:
代码如下:
///<summary>
///绑定repeater的数据源
///</summary>
privatevoidrepeaterbinddata()
{
datatabledt=definedatatableschema(hfrptcolumns.value);
if(request[businessno]==null)
{
loaddata(dt);
}
else
{
loaddata(request[businessno].tostring(),dt);
}
rptrequest.datasource=dt;
rptrequest.databind();
}
privatevoidloaddata(stringbusinessno,datatabledt)
{
stringstrsql=select*fromems_equipmentrequestitemwherebussinessno='+businessno+';
datatabledt_equipmentrequestitem=dbutility.dbhelpersql.query(strsql).tables[0];
//for(inti=0;i<dt_equipmentrequestitem.rows.count;i++)
foreach(datarowdrindt_equipmentrequestitem.rows)
{
datarowrow=dt.newrow();
row[guid]=guid.newguid();
row[equrequestitemid]=dr[equrequestitemid].tostring();
row[equipmenttype]=dr[typeid].tostring();
row[station]=dr[stationid].tostring();
row[equipmentnum]=dr[equipmentnum].tostring();
row[equipmentids]=dr[equipmentids].tostring();
dt.rows.add(row);
}
}
///<summary>
///repeater数据默认加载
///</summary>
///<paramname=dt></param>
privatevoidloaddata(datatabledt)
{
//默认显示1行
for(inti=0;i<1;i++)
{
datarowrow=dt.newrow();
dt.rows.add(row);
}
//为第一行加载一些数据
datarowrow0=dt.rows[0];
row0[guid]=guid.newguid();
row0[equrequestitemid]=;
row0[equipmenttype]=;
row0[station]=;
row0[equipmentnum]=1;//默认初始为1
row0[equipmentids]=;
}
///<summary>
///根据repeater相对应的列名,定义数据源datatable的schema
///</summary>
///<paramname=columns>列名</param>
///<returns></returns>
publicdatatabledefinedatatableschema(stringcolumns)
{
datatabledt=newdatatable();
string[]columnsary=columns.split(',');
foreach(stringstrincolumnsary)
{
dt.columns.add(str);
}
returndt;
}
protectedvoidrptrequest_itemcommand(objectsource,repeatercommandeventargse)
{
if(e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- aspnet repeater 控件 用法 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)