数据绑定的使用

发布时间: 2007-01-24 11:37    作者: 未知    来源: 未知    浏览:    评论

如果要在运行时将数据值分配给一个控件属性,则可以响应由该控件引发的数据绑定事件。在事件代码中,可以执行任何逻辑,无论是否要求该逻辑来分配属性值。
注意 在设计时,可以创建在运行时计算的数据绑定表达式,以将值分配给控件属性。有关详细信息,请参阅在设计时数据绑定单值 Web 服务器控件。
在运行时数据绑定单值控件
1. 确保您的 Web 窗体页中的代码或者调用您正使用的控件的 DataBind 方法,或者调用此页的该方法。将引发数据绑定事件以响应此方法调用。
注意 通常不需要在每个往返行程中都调用 DataBind 方法(即在页初始化阶段不需要检查回发),因为这样做会替换控件中的值。
2. 为控件的 DataBinding 事件创建事件处理程序。
3. 在事件处理程序中,根据需要添加代码以将值分配给控件的属性。
下面的示例说明如何在运行时执行简单的数据绑定。Web 窗体页包含两个 TextBox Web 服务器控件,显示来自 SQL Server pubs 数据库中标题表的信息。“上一个”和“下一个”按钮设置在会话状态中存储的“记录位置”变量。只要用户单击这些按钮以更改记录位置,就调用该页的 DataBind 方法,这将引发用于填充文本框的事件。
' Visual Basic
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SqlDataAdapter1.Fill(DsTitles1)
Session("RecordPos") = 0
Me.DataBind()
End Sub

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
Dim RecordPos As Integer = CType(Session("RecordPos"), Integer)
RecordPos += 1
If RecordPos > DsTitles1.titles.Count Then
RecordPos -= 1
End If
Session("RecordPos") = RecordPos
Me.DataBind()
End Sub

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click
Dim RecordPos As Integer = CType(Session("RecordPos"), Integer)
If RecordPos > 0 Then
RecordPos -= 1
End If
Session("RecordPos") = RecordPos
Me.DataBind()
End Sub

Private Sub TextBox1_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.DataBinding
Dim RecordPos As Integer = CType(Session("RecordPos"), Integer)
TextBox1.Text = DsTitles1.titles(RecordPos).title_id
TextBox2.Text = DsTitles1.titles(RecordPos).title
End Sub

// C#
private void Page_Load(object sender, System.EventArgs e)
{
sqlDataAdapter1.Fill(dsTitles1);
Session["RecordPos"] = 0;
this.DataBind();
}

private void btnNext_Click(object sender, System.EventArgs e)
{
int RecordPos = (int) Session["RecordPos"];
RecordPos++;
if (RecordPos > dsTitles1.titles.Count)
{
RecordPos--;
}
Session["RecordPos"] = RecordPos;
this.DataBind();
}

private void btnPrevious_Click(object sender, System.EventArgs e)
{
int RecordPos = (int) Session["RecordPos"];
if (RecordPos > 0)
{
RecordPos--;
}
Session["RecordPos"] = RecordPos;
this.DataBind();
}

private void TextBox1_DataBinding(object sender, System.EventArgs e)
{
int RecordPos = (int) Session["RecordPos"];
TextBox1.Text = dsTitles1.titles[RecordPos].title_id;
TextBox2.Text = dsTitles1.titles[RecordPos].title;
}
下面的示例将 Label 控件绑定到通过执行 SQL 命令返回的值。该命令对象(对于 SQL Server 是显式的,由已命名的参数指示)以前已通过名为 @empid 的单个参数定义。
用户输入雇员 ID 并单击按钮。该按钮调用 Label 控件的 DataBind 方法,这将引发 DataBinding 事件。在事件处理程序中,代码获取雇员 ID,将其设置为 SqlCommand 对象的参数,并运行该命令的 SQL 语句。该命令返回一个数据阅读器对象,其中具有一个记录,代码读取它并显示在标签中。
' Visual Basic
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Label1.DataBind()
End Sub

Private Sub Label1_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.DataBinding
SqlCommand1.Parameters("@empid").Value = LoginID.Text
SqlCommand1.CommandText = _
"SELECT id, fname, lname FROM employee WHERE (id = @empid)"
SqlCommand1.CommandType = CommandType.Text
Dim dr As System.Data.SqlClient.SqlDataReader
SqlConnection1.Open()
dr = SqlCommand1.ExecuteReader()
If dr.Read() Then
Label1.Text = "Welcome, " & CType(dr(1), String) & " " & CType(dr(2), String)
Else
Label1.Text = "No employee found with id of " & LoginID.Text
End If
SqlConnection1.Close()
End Sub

// C#
private void btnLogin_Click(object sender, System.EventArgs e)
{
Label1.DataBind();
}

private void Label1_DataBinding(object sender, System.EventArgs e)
{
sqlCommand1.Parameters["@empid"].Value = LoginID.Text;
sqlCommand1.CommandText =
"SELECT id, fname, lname FROM employee WHERE (id = @empid)";
sqlCommand1.CommandType = CommandType.Text;
System.Data.SqlClient.SqlDataReader dr;
sqlConnection1.Open();
dr = sqlCommand1.ExecuteReader();
if (dr.Read())
{
Label1.Text = "Welcome, " + dr[1] + " " + dr[2];
}
else
{
Label1.Text = "No employee found with id of " + LoginID.Text;
}
sqlConnection1.Close();
}



TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多