GridView跟DataGrid比哪个好?
来源:互联网 发布:vc2010 socket编程 编辑:程序博客网 时间:2024/04/30 09:40
个人觉得当然是GridView好了,GridView是.NET2.0时出来的,是DataGrid的升级版,所以vs.net2003之后的版本在工具栏已经看不到DataGrid.不过微软还是保留了它,使用它得敲打代码 .许多人都用惯了DataGrid,可能会觉得GridView不好用,其实GridView有许多优点而且方便,了解它以后你会喜欢它的.
GridView的特点:
- Binding to data source controls, such as SqlDataSource.
- Built-in sort capabilities.
- Built-in update and delete capabilities.
- Built-in paging capabilities.
- Built-in row selection capabilities.
- Programmatic access to the GridView object model to dynamically set properties, handle events, and so on.
- Multiple key fields.
- Multiple data fields for the hyperlink columns.
- Customizable appearance through themes and styles.
而DataGrid就没有这么多细化了的功能.
以下列举一些在数据绑定事件中GridView的优点和DataGrid相比之下的不足吧:
1.DataControlRowType
在GridView的RowDataBound事件,能够用DataControlRowType来判断当前所绑定的是header行还是data行等,如:DataControlRowType有DataRow,EmptyDataRow,Header,Footer,Pager等属性,
而DataGrid是靠ListItemType的EditItem,Item,AlternatingItem等属性来区分当前是怎样的行,其实上DataGrid针对是Item,不是row.
2.DataControlRowState
DataControlRowState 有Alternate,Edit,Insert,Normal,Selected属性
Alternate 状态在任何时候都可以与其他状态组合,例如与 Normal、Edit 或 Insert 组合。这些行可能会受到数据控件的 AlternateRowStyle 属性影响(若已设置)。成员名称 说明 Alternate 指示该数据控件行是交替行。
如果GridView要找出哪一行处理编辑状态,可以这样的条件来判断:((e.Row.RowState & DataControlRowState.Edit) != 0)
而DataGrid用是ListItemType.EditItem来判断,将type跟state的概念混在一起了.
3.e.Row
GridView的e.Row可以被转换成DataRow类型,这样就方便取得绑定在GridView里每行的数据了,如((DataRow)e.Row)["CompanyId"]. 而DataGrid不能这样转换,只有e.Item.DataItem可用,要取得绑定数据需要用DataBinder.Eval方法,如DataBinder.Eval(e.Item.DataItem, "r_CompanyId").
4.Keys、OldValues、NewValues集合
Keys字典中一般存放的是数据源中的主键字段的key和value的对应值,如果主键由多个字段组成,那么Keys为每个键字段添加其字段名称和值。OldValues中存放的是要更新的行的字段名和原始值,每个字段为其中的一项。NewValues中存放的是要更新的行的字段名和修改后的值,每个字段为其中的一项。注意,主键字段只存放于keys集合中。
这三个集合中的每一项都是DictionaryEntry类型的对象,我们可以用DictionaryEntry.Key来确定一个项的字段名称,用DictionaryEntry.Value来确定某项的值。
在上面的例子中,为了把密码明文加密后再存入数据库,我们利用了NewValues字段,重新设置key为password的项的值。为了保证安全性,我们在更新数据前对NewValues中的所有值进行html编码:
Example1:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//遍历NewValues,取得其中每一对DictionaryEntry对象
foreach (DictionaryEntry de in e.NewValues)
//de.key就是字段名,如果此处单独更新某字段的话,也可以直接填写字段名,//比如 e.NewValues[“password”]
e.NewValues[de.Key] = Server.HtmlEncode(de.Value.ToString());
}
Example2:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//分别利用Keys、OldValues、NewValues取得主键名、原始数据和更新后数据
Message .Text = e.Keys["username"] + "的email地址从" + e.OldValues["email"] + "变更为" + e.NewValues["email"];
}
DataGrid没有这些.
http://www.techmango.com/blog/article.asp?id=475
- GridView跟DataGrid比哪个好?
- 运行比散步 - 哪个好?
- 云主机跟VPS哪个比较好?哪个稳定安全?
- 这个博客跟新浪博客哪个好呢!?
- GridView DataGrid
- DataGrid GridView
- zec挖矿(zcash挖矿)鱼池跟蚂蚁矿池的比较到底哪个好?哪个收益高?
- zec挖矿(zcash挖矿)鱼池跟蚂蚁矿池的比较到底哪个好?哪个收益高? (二)
- if( 1 == x ) 比 if( x == 1 ) 哪个好
- 跟自己比, 而不是跟别人比!
- CEO没有好的互联网商业模式,你拿什么跟我比?
- 虽然第一次写不怎么好跟许多大大的比不了
- 哪个Blog好?
- pdf软件哪个好
- 选哪个方向好?
- 浏览器哪个好
- linux哪个版本好
- 重庆哪个驾校好
- 正则表达式30分钟入门
- 27歲以上單身男人100條忠告!
- Eclipse中CVS的使用
- aswing做的flickr搜索器(目前只支持tags搜索) view source
- C#开发的一个定向搜索引擎的思路和源代码
- GridView跟DataGrid比哪个好?
- .Net 保护中的native compile方式
- oracle中日期函数的应用(摘抄)
- 1.Java入门
- 今天来了
- C#中获取程序当前路径
- datalist嵌套制作树状结构非常好的东西!
- 初来乍到
- 56网色彩搭配