当前位置:
首页 > 初中教育 > aspnet学习之DataList控件.docx
aspnet学习之DataList控件.docx
- 文档编号:8691798
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:15
- 大小:700.82KB
aspnet学习之DataList控件.docx
《aspnet学习之DataList控件.docx》由会员分享,可在线阅读,更多相关《aspnet学习之DataList控件.docx(15页珍藏版)》请在冰豆网上搜索。
aspnet学习之DataList控件
学习之DataList控件
DataList与GridView的不同
DataList是另一种显示数据控件,它与GridView不同的是,它全部使用模板进行设计,并且DataList的模板是对整行设置,而不是像GridView那样只对某一列进行模板设计。
正是由于它使用模板进行设计,所以它的灵活性比GridView更高,但事情总是有两面性的,灵活度提高了,必然带来使用上的复杂。
因此DataList在易用性上真的不如GridView好,因此在要求有较高灵活性的时候我们最好使用DataList控件。
DataList控件在页面上的初始外观很简单
DataList与模板
在DreamWeaver中的模板如下
项模板
页眉页脚模板
在使用的时间我们一般与DreamWeaver结合使用,在DreamWeaver中做好界面复制到相关模板中使用。
一、用DataList实现简单的二维表格形式的显示
下面是我们在DataList中创建完页眉模板与项模板后的代码,页眉的代码被放在标记中间,而普通项的代码被放在标记中间。
DataListID="DataList1"runat="server"Width="100%">
编号
名称
价格
产地
货架
图片
<%#Eval("Ids")%>
<%#Eval("name")%>
<%#Eval("price")%>
<%#Eval("source")%>
<%#Eval("stack")%>
<%#Eval("image")%>
DataList>
由于模板内容是我们复制过来的Table表格,所以在数据绑定的时间系统不知道该把数据源的值显示在哪个td标记里面。
为此我们使用<%#Eval("列名")%>来手动指定DataList如何绑定至数据源。
这里需要说明的是DataList只支持单向绑定,所以当你使用<%#Bind()%>进行绑定时也只是一种单向绑定的效果,而不像GridView那样双向绑定。
因为DataList使用的是单项绑定,所以它无法像GridView那样自动产生更新与删除的效果,如果想实现更新删除的功能的话则需要我们手动编写代码了。
(车延禄)
运行效果:
如果你对这个页面不太满意的话,那你可以打开源页面对其中的Table表格进行样式设置达到满意的效果。
思考:
如何把图片也显示出来?
思考:
如何把普通项和交替项实现不同的背景色?
二、用DataList实现不规则的显示
像上个例子,如果我们把图片显示出来的话,那图片会把我们的数据行撑大,这样的界面很不美观,我们可以把界面设置为如下方式:
这种样式的显示其实很简单,只需要把模板列变一下就可以了
然后再在源代码相应位置处用<%#Eval("")%>绑定到数据源中就可以了。
要想一行显示多个水果的话,请设置RepeatColumns和RepeatDirection两个属性。
RepeatColumns属性:
设置一行显示几项
RepeatDirection属性:
设置项的布局方式。
Virtical-竖排优先,Horizontal-以行优先
三、用DataList实现更新和删除
用DataList修改和更新
第一步:
在普通项模板或交替项模板中加入一个按钮,并把该按钮的CommandName设为edit。
第二步:
编辑EditTemplate,在其中要执行修改的地方加入文本框或其它控件,并加入“更新”和“取消”两个按钮,分别把这两个按钮的CommandName设为update和cancel
第三步:
在EditCommand事件中编写代码,把当前项用编辑模板显示出来
第四步:
在UpdateCommand事件中编写代码把修改完的数据更新回数据库,在CancelCommand事件中编写代码,把当前项变回普通项状态
运行效果:
在DataList中常用的事件:
ItemCreated:
项创建完成时触发,与GridView中的RowCreated事件相似
ItemDataBound:
数据绑定完成时触发,与GridView中的RowDataBound事件相似
CancelCommand:
当CommandName是cancel的按钮被点击时触发该事件
DeleteCommand:
当CommandName是delete的按钮被点击时触发该事件
EditCommand:
当CommandName是edit的按钮被点击时触发该事件
UpdateCommand:
当CommandName是update的按钮被点击时触发该事件
SelectedIndexChanged:
当CommandName是select的按钮被点击时触发该事件
ItemCommand:
任何一个按钮被点击时触发该事件,包括CommandName是cancel,delete,edit,update,selected的按钮
四、DataList分页
DataList默认不带分页功能,但可以与PagedDataSource对象结合使用进行分页,但对于页数比较多的情况下,这种分页方式太耗费资源,所以建议使用存储过程分页
分页的存储过程:
--取得分页的总页数
createproc UP_CAR_PAGECOUNT
@pagesizeint
AS
declare@cint
select@c=count(*)fromcar
returnceiling(cast(@casfloat)/cast(@pagesizeasfloat))
GO
--分页的存储过程
createproc UP_CAR_PAGESELECT
@pagesizeint,
@nowpageint--,
AS
declare@cint
declare@numint
select@num=(@nowpage-1)*@pagesize
select@c=count(*)fromcar
if@pagesize>0
begin
declare@cmdvarchar(1000)
select@cmd='selecttop'+cast(@pagesizeasvarchar(50))+'*fromcarasc1wherecodenotin(selecttop'+cast(@numasvarchar(50))+'codefromcarasc2orderbyc2.code)orderbyc1.code'
exec(@cmd)
end
GO
数据访问类代码:
publicint GetPageCount(intpagesize)
{
SqlCommandcmd=conn.CreateCommand();
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText="UP_CAR_PAGECOUNT";
cmd.Parameters.AddWithValue("@pagesize",pagesize);
cmd.Parameters.Add("@RETURN_VALUE",SqlDbType.Int).Direction=ParameterDirection.ReturnValue;
conn.Open();
cmd.ExecuteNonQuery();
intn=(int)cmd.Parameters["@RETURN_VALUE"].Value;
conn.Close();
returnn;
}
publicList select(intpagesize,intnowpage)
{
Listlist=newList();
CarDatadata;
SqlCommandcmd=conn.CreateCommand();
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText="UP_CAR_PAGESELECT";
cmd.Parameters.AddWithValue("@pagesize",pagesize);
cmd.Parameters.AddWithValue("@nowpage",nowpage);
conn.Open();
SqlDataReaderdr=cmd.ExecuteReader();
while(dr.Read())
{
data=newCarData();
data.Ids=(int)dr["ids"];
data.Code=(string)dr["code"];
data.Name=(string)dr["name"];
data.Brand=(string)dr["brand"];
data.Time=(DateTime)dr["time"];
data.Oil=(decimal)dr["oil"];
data.Powers=(int)dr["powers"];
data.Exhaust=(int)dr["exhaust"];
data.Price=(decimal)dr["price"];
data.Pic=(string)dr["pic"];
list.Add(data);
}
conn.Close();
returnlist;
}
页面调用代码:
privateconstintPAGESIZE=5;
protectedvoidPage_Load(objectsender,EventArgse)
{
intpagecount=newCarDA().GetPageCount(PAGESIZE);
for(inti=0;i {
LinkButtonlb=newLinkButton();
lb.Text=(i+1).ToString();
lb.Click+=newEventHandler(lb_Click);
Panel1.Controls.Add(lb);
Literallt=newLiteral();
lt.Text=" ";
Panel1.Controls.Add(lt);
}
if(!
IsPostBack)
{
BindList("1");
}
}
privatevoid BindList(stringnowpage)
{
ObjectDataSource1.TypeName="CarDA";
ObjectDataSource1.SelectMethod="select";
ObjectDataSource1.SelectParameters.Clear();
ObjectDataSource1.SelectParameters.Add("pagesize",PAGESIZE.ToString());
ObjectDataSource1.SelectParameters.Add("nowpage",nowpage);
DataList1.DataSourceID=ObjectDataSource1.ID;
}
void lb_Click(objectsender,EventArgse)
{
LinkButtonlb=(LinkButton)sender;
BindList(lb.Text);
}
DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是:
DataList控件默认输出是一个HTML表格.DataList在输出时已经在相应的模板上套上了表格标签,而Repeater则是模板是什么样,输出就是什么样.
总结二:
1.DataList显示数据
例1:
使用DataList显示数据
DataList ID="DataList1" runat="server" DataSourceID="srcMovies">
<%#Eval("Title") %>
Directed by:
<%#Eval("Director") %>
Description:
<%#Eval("Description") %>
DataList>
以上的例子,在Repeater控件显示数据时也是使用这样的格式,但是输出的HTML就有点不同了,DataList输出了一张HTML表格:
collapse;">
非常完美 Directed by:依萌 Description: 两年前,立志成…… |
罗马假日 Directed by:William Wyler Description: 英国的安妮公主到罗马去访问,国务烦身 |
2.表格布局(Table)和流布局(Flow)
●RepeatLayout:
来确定是在表中显示还是在流布局中显示.可选值为Flow和Table
如果在上个例子中加入RepeatLayout属性为Flow,则输出如下所示:
非常完美
Directed by:
依萌
Description:
两年前,立志成……
罗马假日
Directed by:
William Wyler
Description:
英国的安妮公主到罗马去访问,国务烦身
…
3.多列显示数据
从例1看出,默认的DataList是使用一行显示一项数据,但是可以通过以下属性让其一行显示多个数据项:
●RepeatColumn :
需要显示的列数
●RepeatDirection:
输出网格时的方向,可以为Horizontal(横),Vertical(纵)
例2:
多列显示数据:
DataList ID="DataList1" runat="server" RepeatColumns="3" GridLines="Both" DataSourceID="srcMovies">
<%#DataBinder.Eval(Container.DataItem,"Title") %>
-- 为种绑定数据的方法与上面一种是一样的,只是写法不同 -->
Directed by:
<%#Eval("Director") %>
Description:
<%#Eval("Description") %>
DataList>
4.DataList支持的模板
除了ItemTemplate、AlternatingItemTemplate、SeparatorTemplate、HeaderTemplate、FooterTemplate外。
DataList还支持另外两个模板:
●EditItemTemplate:
当行进入编辑状态时显示的样式
●SelectedItemTemplate:
当列被选中时显示的样式
例3:
通过FooterTempla
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
-
aspnet
学习
DataList
控件
冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。