datagrid repeater datalist三者的比较
datagrid repeater datalist三者的比较
1.DataBind()方法遍历一个特定的DataSource中的记录,并对其中的每条记录,建立一个条目并对应数据控件的Item集。数据控件中的每个条目将成为一个类的实例。这个类因数据控件的不同而有所区别。例如,DataGrid中的每个条目是DataGridItem类的一个实例,而Repeater中的条目则是RepeaterItem类的一个实例。
2.之所以使用不同的类来实例化不同数据控件的条目,是因为不同的数据控件将会使用不同的方式显示数据及相应的HTML代码。例如,DataGridItem类继承自TableRow类,也就是说,每个DataGridItem的实例或多或少地可以看成一个表格中的一行。这是因为DataGrid被设计成可以借助HTML中的<table>标签以表格的形式显示数据,因此每条记录就是一个表格行。而Repeater则被设计成可以自由定义数据输出的方式。所以,RepeaterItem并不继承自TableRow就不奇怪了。
3.另一个三种数据控件的相同点是每种控件都被允许使用模板来显示数据。DataList和Repeater控件必须使用模板来输出数据,而DataGrid则允许通过TemplateColumn而只使用模板来显示一列(在DataGrod单元中详细论述)。
4.另一个不是十分值得比较的地方是:DataGrid和DataList都是继承自WebControl类,而Repeater则是继承自Control类。WebControl类包含一些用于美化的属性,如:BackColor、ForeColor、CssClass、BorderStyle等等。这说明在使用DataGrid或DataList时,你可以设定这些属性来个性化输出。Repeater控件则不具有这些属性。我们会在Repeater单元讨论如何使用模板来美化Repeater的输出。
4.datagrid可以分页,排序,编辑
datalist有无分页,无排序,有编辑模板
repeater啥都没有。
5.Asp.net DataList编辑模板的使用
DataList 提供相关的编辑模板,但和DataGrid不一样的是,DataList没有编辑按钮。
要在DataList中使用编辑功能。
可在项模板中增加一个按钮,Linkbutton和Button都可以。
在CommandName中设置为Edit就可以把此按钮和DataList的编辑事件联系起来了。
如:
CommandName="Edit"
更新按钮可以使用CommandName="Update"
取消按钮可以使用CommandName="Cancel"
删除按钮可以使用CommandName="Delete"
来实现。
6.Asp.net 添加客户端脚本
在Page_Load()事件中
输入Script代码字符串,如:string myscript=“<script> alert('hello world');</script>“;
判断是否有客户端脚本,如果没有则添加
if(!Page.IsClientScriptBlockRegistered("clientScript"))
this.RegisterClientScriptBlock("clientScript",script);
在页面载入事件中添加
this.deleteButton.Attributes.Add("onClick", "yourclientfunction();");
7.editItemTemplate模板定义了处于编辑状态时要显示的项的内容,另外还其中添加了"更新"和“取消"按钮。
8.在datagrid中对于用EditCommandColumn来编辑数据,要求点击编辑,更新,取消按钮时,能弹出不同的提示:
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item)
{
if(e.Item.ItemIndex!=-1)
((LinkButton)e.Item.Cells[4].Controls[0]).Attributes.Add("onclick","return confirm('你确认编辑吗?');");
}
else if(e.Item.ItemType==ListItemType.EditItem)
{
if(e.Item.ItemIndex!=-1)
{
((LinkButton)e.Item.Cells[4].Controls[0]).Attributes.Add("onclick","return confirm('你确认更新吗?');");
((LinkButton)e.Item.Cells[4].Controls[2]).Attributes.Add("onclick","return confirm('你确认取消吗?');");
}
}
}
怪异的是,Controls[2],怎么会是2呢,查看html码,编辑列有三个控件,按顺序的话,更新和取消也应该是1,2,但是更新却是0,取消反 而是2,太不可思义了。
浙公网安备 33010602011771号