分享
 
 
 

Web 窗体页的数据绑定表达式

王朝asp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

对 Web 窗体页中的各项控件属性进行数据绑定不是通过直接将属性绑定到数据源来实现的。而是通过使用特殊的表达式格式来实现数据绑定的。与要绑定到的数据有关的信息被置入该表达式,然后将表达式的结果分配给控件属性。

例如,假设您要将 TextBox Web 服务器控件绑定到一些数据。您创建数据绑定表达式并将其分配给控件的 Text 属性,以便该值将在控件中显示。

下面的示例说明控件声明在 HTML 视图中的大体形式。控件的 Text 属性被绑定到包含单个记录的数据视图。数据绑定表达式是用字符 <%# 和 %> 分隔的。

<asp:TextBox id="TextBox1" runat="server"

Text='<%# DataView1(0)("au_lname") %>'>

</asp:TextBox>

同样,可以使用数据绑定表达式来设置 Image Web 服务器控件的 ImageUrl 属性。在这种情况下,您是在从数据库中提取一个字符串,该字符串包含要显示的图形的路径和文件名。一个示例可能类似于如下所示:

<asp:Image id=Image1 runat="server"

ImageUrl='<%# DataView(0)("productPhotoURL") %>'>

在 Visual Studio 中,“属性”窗口向您提供创建数据绑定表达式的工具。您还可以选择自行创建绑定表达式并在 Web 窗体设计器的 HTML 视图中输入它们。

使用数据绑定表达式的优点使用数据绑定表达式在以下几个方面为您提供灵活性:

可以使用任何表达式,只要该表达式解析为控件可以使用的值。最常见的是,数据绑定表达式将解析为从数据源导出的值,但它还可以引用该页或其他控件的属性、您在运行时计算出的值或几乎任何其他项。 可以将表达式分配给任何属性,也就是说,可以将任何属性绑定到数据。例如,您可以将与用户首选项有关的信息保留在数据库中,并且使用数据绑定为字体、颜色、大小、样式等实现属性中的那些首选项。此外,可以绑定不止一个控件属性,这使您可以将一个属性绑定到一个数据源,将另一个属性绑定到不同的源。 使用 DataBinder 类用于绑定尽管您可以实际使用解析为一个值的任何表达式来进行数据绑定,但在大多数情况下,您将绑定到某些类型的数据源。最为常见的情况是数据集或数据视图中的表,表中包含您感兴趣的单个记录。为了简化此类型的数据绑定,ASP.NET 服务器控件支持名为 DataBinder 的类,它执行某些提取数据并使其可用于控件属性的工作。

可以通过调用其 Eval 方法来使用 DataBinder 类,这要求两个参数:

对数据容器(通常是数据集)、数据表或数据视图的引用。 对要被导出的单独的值的引用。这通常引用单行(行零)和该行中的列值。 下面的示例说明与上面的文本框所执行的相同的数据绑定,但这一次使用 DataBinder 类。

<asp:TextBox id="TextBox1" runat="server"

Text='<%# DataBinder.Eval(DataView1, "[0].au_lname") %>'>

</asp:TextBox>

先前设置 Image 控件 ImageUrl 属性的示例可能类似于如下所示。在该示例中,一个格式设置表达式在 DataBinder.Eval 方法的第二个参数(可选)中传递;该表达式将一个路径当作前缀添加到数据中。

<asp:Image id=Image1 runat="server"

ImageUrl='<%# DataBinder.Eval(Container, "DataItem.ProductImage", "http://myserver/myapps/images/{0}") %>'>

使用 DataBinder 类的优点是:

语法对于所有绑定是一致的,由 Eval 方法所需的参数强制采用的。 Web 窗体页的 Visual Studio 设计工具支持 DataBinder 类。 类自动执行类型转换。例如,如果将一个文本框绑定到包含整数的数据列,DataBinder 类自动将整数转换为字符串。 您可以选择指定一个可转换或修正数据的格式设置表达式。 解析数据绑定表达式为了提供控件可以绑定到的值,必须在运行时解析数据绑定表达式。通过调用 DataBind 方法(它是 System.Web.UI.Control 类的方法),可以在页处理期间显式执行此步骤。可以为单独的控件调用该方法,或者更为有效的是,可以为 Page 类(也是从 Control 类导出的)调用该方法。此方法级联对所有子控件的调用,所以通过为该页调用此方法一次,您可以为该页上的所有控件调用它。

通常在以下情况下调用 DataBind 方法:

该页第一次运行时,但在填充数据源之后(例如,在您已填充数据集之后)。 在数据源发生更改之后(例如,因为已更新了数据源中的记录)。 下面的示例说明在页初始化事件期间调用 DataBind 方法的典型方式:

' Visual Basic

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

SqlDataAdapter1.Fill(DsAuthors1, "authors")

If Not (Me.IsPostBack) Then

Me.DataBind()

End If

End Sub

// C#

private void Page_Load(object sender, System.EventArgs e)

{

SqlDataAdapter1.Fill(dsAuthors1, "authors");

if (!this.IsPostBack)

{

this.DataBind();

}

}

通常不需要在每个往返过程中都调用 DataBind 方法(即在页初始化中不需要检查回发),因为这样做会替换控件中的值。例如,如果您使用 DataGrid 控件,该控件可能包含您要处理的更改。在您调用 DataBind 时,用来自数据源的值代替网格的内容。如果在页初始化期间执行此操作,您将在有机会处理更改前,失去网格中的更改。您而是应通常在为该事件执行了数据处理后,在事件处理程序中调用 DataBind 方法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有