WEB开发网
开发学院软件开发C语言 Effective C# 原则38:使用和支持数据绑定 阅读

Effective C# 原则38:使用和支持数据绑定

 2009-02-19 08:15:45 来源:WEB开发网   
核心提示: 你几乎可以在所有的Windows控件和web控件上使用数据绑定,在控件里显示的值,Effective C# 原则38:使用和支持数据绑定(5),字体,只读状态,通过创建类型层以及使用数据绑定的概念,你就可以少写很多代码,甚至是控件控件的位置,都可以成为绑定操作的对象

你几乎可以在所有的Windows控件和web控件上使用数据绑定。在控件里显示的值,字体,只读状态,甚至是控件控件的位置,都可以成为绑定操作的对象。我的建议是创建类或者结构,包含一些用户要求的,以某种样式显示的数据。这些数据就是用于更新控件。

另外,在简单控件中,数据绑定经常出现在DataSet和DataGrids中。这非常有用,你把DataGrid绑定到DataSet上,然后DataSet中所有的值就显示了。如果你的DataSet有多个表,你甚至还可以在多个表中间进行导航。这不是很好吗?

好了,下面的问题就是如果你的数据集不包含你想显示的字段时该怎么办。这时,你必须添加一个列到DataSet中,这一列计算一些UI中必须的值。如果值可以用SQL表达式计算,那么DataSet可以为你完成。下面的代码就添加了一个列到Employees 数据表中,用于显示格式化了名字:

DataTable dt = data.Tables[ "Employees" ];
dt.Columns.Add( "EmployeeName",
 typeof( string ),
  "lastname + ', ' + firstname");

通过添加列到DataSet中,你可以添加这些列到DataGrid上。你所创建的对象层,是在数据存储对象的最项层上,用于创建数据表现层给你的用户。

到目前为止,这一原则里所使用的都是string类型,.net框架可以处理字符到数字的转化:它试图转化用户的输入到恰当的类型。如果失败,原始的值会恢复。这是可以工作的,但用户完全没的反馈信息,他们的输出被安静的忽略了。你可以通过处理绑定过程中的转化事件来添加反馈信息。这一事件在绑定管理者从控件上更新值到数据源时发生。ParseEventArgs包含了用户输入的文字 ,以及它所期望被转化的类型。你可以捕获这一事件,其后完成你自己的通知,也可以修改数据并且用你自己的值来更新数据:

private void Form1_Parse( object sender, ConvertEventArgs e )
{
 try {
  Convert.ToInt32 ( e.Value );
 } catch
 {
  MessageBox.Show (
   string.Format( "{0} is not an integer",
    e.Value.ToString( ) ) );
  e.Value = 0;
 }
}

你可能还要处理Format事件,这一个HOOK,可以在数据从数据源到控件时格式化数据。你可以修改ConvertEventArgs的Value字段来格式化必须显示的字符串。

.Net提供了通用的框架,可以让你支持数据绑定。你的工作就是为你的应用程序和数据提供一些特殊的事件句柄。Windows表单和Web表单以及子系统都包含了丰富的数据绑定功能。框架库已经包含了所有你须要的工具,因此,你的UI代码应该真实的描述数据源和要显示的属性,以及在把这些元素存储到数据源时须要遵守的规则。你应该集中精力创建数据类型,用于描述显示的参数,然后Winform以及Webform的数据绑定完成其它的。不应该在把数据从用户控件到数据源之间进行传输时写相关的代码(译注:指用数据绑定,而不用其它的方法)。不管怎样,数据必须从你的业务对象关联到UI控件上与用户进行交互。通过创建类型层以及使用数据绑定的概念,你就可以少写很多代码。.Net框架已经 同时在Windows和Web应用程序中为你处理了传输的工作。

上一页  1 2 3 4 5 

Tags:Effective 原则 使用

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