飞雪桌面日历注册-快播怎么看片

itemdatabound
2023年4月1日发(作者:可乐视频社区)

详解数据绑定操作中Repeater控件的⽤法

⼀、绑定控件之Repeater

.NET封装了多种数据绑定控件,诸如GridView、DataList等但该篇⽂章将会从Repeater⼊⼿,因为Repeater只提供了基本的

数据绑定模板,没有内置其它分页等功能,所以它是最原始的数据绑定控件,只要能够熟练运⽤Repeater控件其它的绑定控

件也就很简单了。

1、Repeater简介

Repeater控件是基本模板化数据列表。它不像GridView控件⼀样能够可视化的设计格式或样式,因此开发时在控件模板中必

须显式声明所有格式、格式和样式标记。另外Repeater控件没有内置选择、排序、编辑、分页等功能,它只提供了基本的数

据绑定,但是它为开发⼈员提供了ItemCommand事件,该事件⽀持在控件中收发命令。

想要绑定数据,模板是必不可少的,Repeater控件同样⽀持数据模板,⽽且还可以在模板中添加想要的标签,它主要⽤法如

下图:

Note:每个Repeater控件必须定义ItemTemplate。

⼆、控件使⽤技巧

上⽂讲解了Repeater基本的使⽤⽅法及它的⼀些基本特性,接下来做⼏个经典的⽰例来运⽤Repeater控件。

1、数据绑定之删除、编辑

该⽰例将会使⽤的前台和后台结合来实现显⽰数据,并能够编辑和删除数据。

删除页⾯:

编辑页⾯:

前台代码:在单击编辑按钮后将会进⼊编辑页⾯,页⾯是由两个Panel控件来控制,通过传递ID号的⽅式判断显⽰的是编辑页

⾯还是删除页⾯,另外前台代码通过设置控件的CommandArgument属性来传递后台所需要判断的id号。

ID

内容

操作

'>

<%#Eval("name")%>

'runat="server">编辑

'runat="server">删除

'>

'>

'runat="server">取消

'runat="server">更新

后台代码:在后台代码中很重要的两个事件是ItemCommand和ItemDataBound,其中ItemCommand负责接收前台传进来的按

钮命令,根据命令的参数来设置后台传递的id,并在ItemDataBound中来验证id判断切换显⽰Panel。

usingSystem;

c;

;

ent;

;

;

trols;

namespaceWebApplication4

{

publicpartialclassEditPage:

{

privateintid=0;//保存指定⾏操作所在的ID号

///

///窗体加载时绑定数据

///

///

///

protectedvoidPage_Load(objectsender,EventArgse)

{

if(!Back)

{

ndToRepeater();//将数据绑定到Repeater控件上

}

}

///

///将数据源绑定Repeater控件上

///

privatevoidDataBindToRepeater(){

//使⽤using语句进⾏数据库连接

using(SqlConnectionsqlCon=newSqlConnection("server=.;database=MyBlog;uid=sa;pwd=1"))

{

();//打开数据库连接

SqlCommandsqlcom=newSqlCommand();//创建数据库命令对象

dText="select*frommatch";//为命令对象指定执⾏语句

tion=sqlCon;//为命令对象指定连接对象

urce=eReader();//为Repeater对象指定数据源

nd();//绑定数据源

}

}

///

///Repeater控件命令事件

///

///

///

protectedvoiduserRepeat_ItemCommand(objectsource,RepeaterCommandEventArgse)

{

//获取命令⽂本,判断发出的命令为何种类型,根据命令类型调⽤事件

if(dName=="Edit")//编辑命令

{

id=(ng());//获取命令ID号

}

elseif(dName=="Cancel")//取消更新命令

{

id=-1;

}

elseif(dName=="Delete")//删除⾏内容命令

{

id=(ng());//获取删除⾏的ID号

//删除选定的⾏,并重新指定绑定操作

Repeater(id);

}

elseif(dName=="Update")//更新⾏内容命令

{

//获取更新⾏的内容和ID号

stringstrText=((TextBox)ntrol("txtName")).();

intintId=(((Label)ntrol("lblID")).Text);

//更新Repeater控件的内容

Repeater(strText,intId);

}

//重新绑定控件上的内容

ndToRepeater();

}

///

///删除⾏内容

///

///删除⾏所在内容的ID

privatevoidDeleteRepeater(intintId){

using(SqlConnectionsqlCon=newSqlConnection("server=.;database=MyBlog;uid=sa;pwd=1"))

{

();//打开数据库连接

SqlCommandsqlcom=newSqlCommand();//创建数据库命令对象

dText="deletefrommatchwhereid=@id";//为命令对象指定执⾏语句

tion=sqlCon;//为命令对象指定连接对象

//创建参数集合,并向sqlcom中添加参数集合

SqlParametersqlParam=newSqlParameter("@id",intId);

(sqlParam);

eNonQuery();//指定更新语句

}

}

///

///更新Repeater控件中的内容

///

///修改后的内容

///内容所在⾏的ID号

privatevoidUpdateRepeater(stringstrText,intintId){

using(SqlConnectionsqlCon=newSqlConnection("server=.;database=MyBlog;uid=sa;pwd=1"))

{

();//打开数据库连接

SqlCommandsqlcom=newSqlCommand();//创建数据库命令对象

dText="updatematchsetname=@strwhereid=@id";//为命令对象指定执⾏语句

tion=sqlCon;//为命令对象指定连接对象

//创建参数集合,并向sqlcom中添加参数集合

SqlParameter[]sqlParam={newSqlParameter("@str",strText),newSqlParameter("@id",intId)};

ge(sqlParam);

eNonQuery();//指定更新语句

}

}

///

///Repeater控件数据绑定时发⽣的事件

///

///

///

protectedvoiduserRepeat_ItemDataBound(objectsender,RepeaterItemEventArgse)

{

//判断Repeater控件中的数据是否是绑定的数据源,如果是的话将会验证是否进⾏了编辑操作

//ListItemType枚举表⽰在⼀个列表控件可以包括,例如DataGrid、DataList和Repeater控件的不同项⽬。

if(pe==||pe==atingItem)

{

//获取绑定的数据源,这⾥要注意上⾯使⽤sqlReader的⽅法来绑定数据源,所以下⾯使⽤的DbDataRecord⽅法获取的

//如果绑定数据源是DataTable类型的使⽤下⾯的语句就会报错.

Recordrecord=(Record)em;

//DataTable类型的数据源验证⽅式

//wViewrecord=(DataRowView)em;

//判断数据源的id是否等于现在的id,如果相等的话证明现点击了编辑触发了userRepeat_ItemCommand事件

if(id==(record["id"].ToString()))

{

((Panel)ntrol("plItem")).Visible=false;

((Panel)ntrol("plEdit")).Visible=true;

}

else

{

((Panel)ntrol("plItem")).Visible=true;

((Panel)ntrol("plEdit")).Visible=false;

}

}

}

}

}

2、分页--PageDataSource

前台代码:使⽤原始的html⽂本,并添加了⼀个Literal标签,⽤来动态添加并指定html标签。

页⾯截图:

.pageBar

{

margin-top:10px;

}

.pageBara

{

color:#333;

font-size:12px;

margin-right:10px;

padding:4px;

border:1pxsolid#ccc;

text-decoration:none;

}

ID

内容

'>

<%#(em,"name")%>

后台代码:Repeater控件的数据源是PagedDataSource对象,在页⾯加载时为该对象动态指定了分页的属性,并使⽤Literal

标签来动态指定每个标签跳转页的链接。

usingSystem;

c;

;

ent;

;

;

;

trols;

namespaceWebApplication4

{

publicpartialclassPageDemo:

{

privatestringid="";

protectedvoidPage_Load(objectsender,EventArgse)

{

if(!Back)

{

//设置当前页的索引

intpageIndex=1;

try

{

//获取当前索要跳转页的索引号

pageIndex=32(tring["Page"]);

//如果是第0页将会跳转⼊第1页

if(pageIndex<=0)

{

pageIndex=1;

}

}

catch

{

pageIndex=1;

}

DataTabledt=aTable();//获取绑定的数据表

PagedDataSourcepds=newPagedDataSource();//创建分页数据源对象

urce=tView;//为数据源对象设置数据源

aging=true;//对象允许分页

ze=2;//设置对象每页显⽰的⼤⼩

tPageIndex=pageIndex-1;//设置数据源的当前页

//向Repeater控件上绑定分页数据源控件

urce=pds;

nd();

//使⽤Literal标签来动态指定每个标签跳转页的链接

=eBar(pds);

}

}

///

///获取每个标签上的跳转页的链接地址

///

///分页数据源对象

///分页操作按钮的html⽂本

privatestringGetPageBar(PagedDataSourcepds)

{

stringpageBar=;//声明页⾯标签⽂本

intcurrentPageIndex=tPageIndex+1;//获取当前页索引

//判断⾸页的链接页⾯

if(currentPageIndex==1)//如果该页为第⼀页,则证明它为⾸页

{

pageBar+="⾸页";

}

else

{

//如果不是⾸页,⾸页链接的地址将会为1

pageBar+="⾸页";

}

//判断上⼀页链接的地址

if((currentPageIndex-1)<1)//如果上⼀页⼩于1则链接到第⼀页

{

pageBar+="上⼀页";

}

else

{

//如果上⼀页地址不是1将会链接到上⼀页

pageBar+="上⼀页";

}

//指定下⼀页的链接地址

if((currentPageIndex+1)>unt)

{

//如果下⼀页的地址⼤于总页数,将会连接到⾸页

pageBar+="下⼀页";

}

else

{

//否则的话链接到下⼀页

pageBar+="下⼀页";

}

//指定末页的链接地址

if(currentPageIndex==unt)

{

pageBar+="末页";

}

else

{

pageBar+="末页";

}

returnpageBar;//返回html⽂本

}

///

///获取数据源,重新链接数据

///

///DataTable,数据源

privateDataTableGetDataTable()

{

DataTabledt=newDataTable();//创建数据库表

using(SqlConnectioncon=newSqlConnection("server=.;DataBase=MyBlog;uid=sa;pwd=1;"))

{

();//打开数据库链接

SqlCommandsqlCom=newSqlCommand();//声明并创建数据库命令集

StringBuildersqlStr=newStringBuilder();//声明sql语句

("select*frommatch");//获取sql语句

dText=ng();//为sqlcommand对象指定sql语句

tion=con;//为sqlcommand对象指定链接对象

SqlDataAdaptersqlDa=newSqlDataAdapter(sqlCom);//声明数据库适配器

SqlCommandBuildersqlBuilder=newSqlCommandBuilder(sqlDa);

(dt);//填充表

}

returndt;

}

}

}

结语

⽂章主要介绍了Repeater控件的基本使⽤⽅法,并通过两个⽰例来更深⼀步的学习了Repeater控件的使⽤。虽然Repeater控

件封装的操作较少,但它是最基础的数据绑定控件,另外可以通过使⽤其它控件来弥补Repeater控件的不⾜,如可以通过使

⽤PagedataSource类来实现数据的分页。⽂章写到这⾥并没有结束,下篇⽂章将会着重讨论ListView。