asp.net五大数据访问控件简单比较

本文对比了ASP.NET中的多种数据控件,包括GridView、DataList、Repeater、DetailsView和FormView。详细介绍了每种控件的特点及适用场景,如自定义布局能力、内置功能等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据绑定控件比较(Reapter/DataList/GridView/DatailsView/FormView):
1.插入功能方面:
DetailsView和FormView具有插入功能,其它控件没有
2.模板
DataList/FormView/Repeater三种必须编辑模板,而
GridView和DetailsView只有在将列转换成模板列以后才会出现各种模板.
3.自动分页功能
GridView ,DetailsView和FormView都是2.0版本新增控件,内置了分页,排序等等功能,
其他需要手工定义
4.数据呈现方式:
GridView,DataList,Repeator用于呈现多列数据,
DetailsView,FormView用于呈现单列数据,即常用的数据明细.


DataList和Reapter都需要编辑模板列,而在模板列当中可以添加TextBox,同时可以指定TextBox的ID从而实现提取用户输入的值,但是DataGrid和GridView两个件是不需要编辑模板的,它的编辑功能是自动生成的我们无法知道那些文本框的ID,也就无法通过ID来获取用户的输入,那么可以通过对单元格的引用来实现:
private void DataGrid1_UpdateCommand(object source,xx)
{
    string bkid=DataGrid1.DataKeys[e.Item.ItemIndex].toString();//提取主键
    string bktitle=((TextBox)e.Item.Cells[1].Controls[0]).Text;//提取用户的输入
}

 

一.进入编辑状态:
DataList1.EditItemIndex = e.Item.ItemIndex;
DataGrid1.EditItemIndex = e.Item.ItemIndex;
GridView1.EditIndex = e.NewEditIndex;
DetailsView1.ChangeMode(DetailsViewMode.Edit);//进入编辑状态
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);//退出编辑状态


二.设置主键:
DataList1.DataKeyField = "bkid";
DataGrid1.DataKeyField = "bkid";

string[] str={"bkid"};
GridView1.DataKeyNames = str;


三.提取主键:
string bkid = DataList1.DataKeys[e.Item.ItemIndex].ToString();//DataList
string bkid = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//DataGrid
string bkid = GridView1.DataKeys[e.RowIndex].Value.ToString();//GridView
string bkid = DetailsView1.DataKey[0].ToString();

四.查找控件:
string bktitle = ((TextBox)e.Item.FindControl("txtTile")).Text;//DataList
string bktitle = ((TextBox)e.Item.Cells[1].Controls[0]).Text;//DataGrid
string bktitle = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
string bktitle = ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text;


注意查找控件有两种方法:(各数据绑定控件的都可以用下面两种方法进行查找)
1.如果知道控件的ID可以用这种方法
((TextBox)e.Item.FindControl("txtTile")).Text;//这是查找
2.如果不知道控件的ID可用这种方法
((TextBox)e.Item.Cells[1].Controls[0]).Text;//这是索引


五.给删除按钮添加确认:
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
     {
         if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
         {
             LinkButton lbtn =(LinkButton) e.Item.FindControl("lbtndelete");
             lbtn.Attributes.Add("OnClick","return confirm(‘确定要删除吗?‘)");
         }
     }

protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
     {
         if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
         {
             LinkButton lbtn = (LinkButton)e.Item.Cells[3].Controls[0];
             lbtn.Attributes.Add("OnClick","return confirm(‘确认删除?‘)");
         }
     }


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
     {
         if(e.Row.RowType== DataControlRowType.DataRow)
         {
             string strid = e.Row.Cells[0].Text;//获取第一行的字段值;
             e.Row.Cells[3].Attributes.Add("OnClick", "return confirm(‘确认删除/""+strid+"/"?‘)");
             //用了两个转义符将第一列的值用引号括起来,注意转义符后面一个将不被解释,是直接放上去;

         }
     }
==============================================================================================================
ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormView。

  ASP.NET 数据控件综述:

  1.前3个用于呈现多条记录,后面2个用于呈现单条数据明细,即常用的记录明细。

  2.GridView和DetailsView控件的布局固定,自定义数据显示的布局功能有限,一般适合布局简单的数据呈现。3.DataList,Repeater和FormView数据控件都有很强的自定义布局能力,如果数据呈现需要较为复杂的布局方案,这3个控件是首选。

  4.GridView ,DetailsView和FormView这三个都是.net 2.0新增的控件,内置了分页,排序等等功能,其改进程度是1.1所提供控件无法比的。

  5.DataList和Repeater是1.1版就提供的控件,内置功能较弱,需要自己实现分页,排序,数据事件等功能。

  有趣的是,在现在的Asp.net平台上,如果从功能上来说呈现单列数据时DetailsView和FormView相对应,DetailsView布局固定FormView自定义布局,呈现多列数据时只有GridView来负责布局固定的数据,从功能上来说,没有对应的控件与GridView相配。

  DataList提供的数据功能与GridView相比,实在是太弱了.与GridView几乎不需要编程就能担负数据呈现的重任相比,DataList要求程序员必须自己写代码来实现想要的功能。

  ASP.Net 数据控件之GridView 控件:

  GridView 控件以表的形式显示数据,并提供对列进行排序、分页、翻阅数据以及编辑或删除单个记录的功能。

  注意:GridView 控件是 ASP.NET 的早期版本中提供的 DataGrid 控件的后继控件。除了添加利用数据源控件功能的新功能,GridView 控件还实现了某些改进,例如,定义多个主键字段的功能、使用绑定字段和模板的改进用户界面自定义以及用于处理或取消事件的新模型。

  ASP.Net 数据控件之DetailsView 控件:

  DetailsView 控件一次呈现一条表格形式的记录,并提供翻阅多条记录以及插入、更新和删除记录的功能。DetailsView 控件通常用在主/详细信息方案中,在这种方案中,主控件(如 GridView 控件)中的所选记录决定了 DetailsView 控件显示的记录。

  ASP.NET 数据控件之FormView 控件:

  FormView 控件与 DetailsView 控件类似,它一次呈现数据源中的一条记录,并提供翻阅多条记录以及插入、更新和删除记录的功能。不过,FormView 控件与 DetailsView 控件之间的差别在于:DetailsView 控件使用基于表格的布局,在这种布局中,数据记录的每个字段都显示为控件中的一行。而 FormView 控件则不指定用于显示记录的预定义布局。实际上,您将创建包含控件的模板,以显示记录中的各个字段。该模板包含用于设置窗体布局的格式、控件和绑定表达式。

  ASP.NET 数据控件之Repeater 控件:

  Repeater 控件使用数据源返回的一组记录呈现只读列表。与 FormView 控件类似,Repeater 控件不指定内置布局。您可以使用模板创建 Repeater 控件的布局。

  ASP.NET 数据控件之DataList 控件:

  DataList 控件以表的形式呈现数据,通过该控件,您可以使用不同的布局来显示数据记录,

  例如,将数据记录排成列或行的形式。您可以对 DataList 控件进行配置,使用户能够编辑或删除表中的记录。(DataList 控件不使用数据源控件的数据修改功能;您必须自己提供此代码。)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值