asp.net使用技巧(二)

                                                DataGrid剖析
DataGrid
优点:
灵活性强,内直事件丰富
提供分页、编辑、排序等特性
强大的DataGrid编辑器以及模板列
快速开发、容易部署
对于表格的操作非常方便
内直多种布局风格
缺点:
性能不高/每次操作都要postback回服务器,数据量多大viewState就多大
个性化输出数据有现(只能输出HTML表格)
DataList
优点:
强大的模板特性,灵活性高
支持数据的编辑状态
性能优于DataGrid缺点:
开发周期略比DataGrid高
没有DataGrid那样的编辑器
不容易实现分页和排序功能
Repeater完全以HTML方式呈现,更加个性化
缺点:不支持编辑,分页,排序
开发周期最长
不提供默认的风格,需手工编写
性能最好,但特性少
三者的使用范围:
DataGrid:主要用于含有数据的表格,一般数据爰为DATASET,多列显示
DataList;主要用于单列的数据列表
Repeater:用于一些灵活性,高性能的数据展示
总的来说DataGrid包括
每一行就代表一个DataGridItem:ListItemType:
Header,Footer,Item,AlternatingItem,SelectedItem,EditItem,Separastor,Pager
每一列就代表一个DataGridColumn:BoundColumn,BttonColumn,HyperLinkColumn,TemplateColumn,EditCommandColumn
DataGrid使用时要注意的问题:
建议不使用自动生成列
不要仅仅使用控件ID来引用DataGrid中的控件,需要通过FindControl来指明。
DataGrid从开始加载数据到呈现数据完毕所需要经历的事件顺序:
在进行DATABIND方法时执行DATABINDING(目的:加载DataSet中列并创建ItemCreated事件)->ItemCreated事件->ItemDataBind事件->PreRender事件
ItemCreated,ItemDataBind都可以转换成一个DataRowView,这样我们就可以轻易的获取DataGrid里那一行的那一个字段,但是ItemCreated时转换的话没多大意义,此时行还未真正获得值为空(null),一般是在ItemDataBind这个事件下进行转换。
DataGrid绑定事件常见问题:
1。引用e.item.DataItem时报错
原因:没有在ItemCreated,ItemDataBind下判断类型:
(DataRowView)(e.Item,DataItem)只有在item,AlternatingItem,Selecteditem,edititem行时才有值。
2。数据绑定完后如何访问某行的数据?
不能使用DataGridItem来直接访问,他只是在绑定的过程中才有值,绑定完后就为空了,需要通过循环来访问:
for each(DataGridItem  dgi in DataGrid1.items)
{.....}
3.使用ItemCreated事件时要注意
当加载、修改行属性或者行内的控件属性时应该判断类型
private void DataGrid1_ItemCreated(....)
{
 if(e.Item.ItemType==ListItemType.item)
 {
  ............
 } 
}
如添加删除确认筐:
private void DataGrid1_ItemDataCreated(....)
{
 if(e.Item.ItemType==ListItemType.item ||e.Item.ItemType==ListItemType.AlternatingItem )
 {
  LinkButton l=(LinkButton)e.Item.cells[11].Controls[0];
  DataRowView drv=(DataRowView)e.Item.DataItem;
  L.Atrributes.Add("onclick","javascript:return Confirm("你确认要删除"+drv.Row.ItemArray[0]+"?");");
  Label lb=(Label)e.Item.FindControl("lbID");
  lb.Text=Convert.tostring(e.item.itemindex+1);
 } 
}
数据绑定:
简单属性:<%# custID%>
集合:<asp:ListBox id="list1" datasource='<%# myArray%>' runat="server">
表达式:<%#(customer.First Name+""+customer.LastName)%>
方法结果:<%#GetBalance(custID)%>
m模板列的绑定:
DataBidner,Eval
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值