9.3.3 显示数据
要执行最后的操作—— 显示数据,必须重写在回调例程中调用的PerformDataBinding方法。这个方法的目的非常简单:处理提取的所有项,对数据进行一定的处理。在大多数情况下,都是用提取的数据更新用户界面。前面的示例代码只提取了一个值,所以代码只把这个值移动到页面上(其他控件可以显示所有的字段或一个DataValueField)。
给PerformDataBinding方法传送从数据源提取的数据,作为参数data。开始该例程时,应先调用底层的PerformDataBinding方法,确保执行DataBound类中的所有实用代码。还应确保在显示数据之前传送它们,如下面的Visual Basic 2005代码所示(这里声明的变量将在本章后面使用)。
Protected Overrides Sub PerformDataBinding( _
ByVal data As System.Collections.IEnumerable)
Dim objData As Object
Dim tb As System.Web.UI.WebControls.TextBox
Dim ctr As Integer
Dim strFieldName as String
MyBase.PerformDataBinding(data)
If data IsNot Nothing Then
C#的对应代码如下所示。
protected override void PerformDataBinding(System.Collections.IEnumerable
data)
{
System.Web.UI.WebControls.TextBox tb;
int ctr;
string strFieldName;
base.PerformDataBinding(data);
if(data != null)
{
有了数据后,就可以迭代它们,处理相应的字段了。可以使用DataBinder对象的GetPropertyValue方法提取数据。必须给GetPropertyValue方法传送三个参数。
● 数据项
● 要提取的字段名
● 控制返回数据的格式的格式字符串(使用控件的开发人员可以使用DataTextFormat属性设置这个格式)
在下面的Visual Basic 2005示例中,提取DataTextField属性指定的字段,用于定制文本框的值,该文本框添加到数据绑定控件的Controls集合中。传送给GetPropertyValue方法的参数是要处理的数据项和在DataTextField中指定的字段名(没有提供格式)。
提示:
应检查是否已正确设置提取数据所需的所有属性。例如,在下面的例子中,先检查DataTextField,再将它用于提取数据。
If DataTextField > "" Then
strFieldName = DataTextField
ctr = 0
For Each objData In data
tb = New System.Web.UI.WebControls.TextBox
ctr = ctr + 1
tb.ID = "tb" & ctr
tb.Text = System.Web.UI.DataBinder.GetPropertyValue( _
objData, strFieldName, Nothing)
Me.Controls.Add(tb)
Next
End If
C#的对应代码如下所示。
if(DataTextField.CompareTo("") > 0)
{
strFieldName = DataTextField;
ctr = 0;
foreach (object objData in data)
{
tb = new System.Web.UI.WebControls.TextBox();
ctr = ctr + 1;
tb.ID = "tb" + ctr;
tb.Text = System.Web.UI.DataBinder.GetPropertyValue(objData,
strFieldName, null);
this.Controls.Add(tb);
}
}






