WEB开发网
开发学院软件开发C语言 Effective C# 原则41:选择DataSet而不是自定义的... 阅读

Effective C# 原则41:选择DataSet而不是自定义的数据结构

 2009-02-19 08:17:41 来源:WEB开发网   
核心提示: public class AddressList : CollectionBase{public string GetListName(PropertyDescriptor[ ] listAccessors ){return "AddressList";}public

public class AddressList : CollectionBase
{
 public string GetListName(
  PropertyDescriptor[ ] listAccessors )
 {
  return "AddressList";
 }
 public PropertyDescriptorCollection
  GetItemProperties(
  PropertyDescriptor[ ] listAccessors)
 {
  Type t = typeof( AddressRecord );
  return TypeDescriptor.GetProperties( t );
 }
}

这稍微好一点了,现在你你已经有一个集合可以支持简单的数据绑定了。尽管,你失去了很多功能。下一步就是要实现数据对事务的支持。如果你使用过DataSet,你的用户可以通过按Esc键来取消DataGrid中一行上所有的修改。例如,一个用户可能输入了错误的城市,按了Esc,这时就要原来的值恢复过来。DataGrid同样还支持错误提示。你可以添加一个ColumnChanged 事件来处理实际列上的验证原则。例如,州的区号必须是两个字母的缩写。使用框架里的DataSet,可以这样写代码:

ds.Tables[ "Addresses" ].ColumnChanged +=new
 DataColumnChangeEventHandler( ds_ColumnChanged );
private void ds_ColumnChanged( object sender,
 DataColumnChangeEventArgs e )
{
 if ( e.Column.ColumnName == "State" )
 {
  string newVal = e.ProposedValue.ToString( );
  if ( newVal.Length != 2 )
  {
   e.Row.SetColumnError( e.Column,
    "State abbreviation must be two letters" );
   e.Row.RowError = "Error on State";
  }
  else
  {
   e.Row.SetColumnError( e.Column,
    "" );
   e.Row.RowError = "";
  }
 }
}

上一页  1 2 3 4  下一页

Tags:Effective 原则 选择

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接