9.3.4 进行更新
提取了数据后,还可以提供一种处理更新的方式。DataSourceView对象提供了Update、Delete和Insert方法与数据源通信,使之进行可能的更新。与Select方法一样,这些更新也是异步执行的。
注意:
在调用Update、Delete和Insert方法之前,应检查DataSourceView的CanUpdate、CanDelete和CanInsert属性。并不是所有的数据源都支持所有的操作。
这三个方法接受四个参数,前三个参数是一组名称/值对。
● 要更新的数据的主键(Insert方法不需要)
● 数据的原始值(Insert方法不需要)
● 新值(Delete方法不需要)
● 更新完成后调用的回调函数
下面的Visual Basic 2005代码创建了一个StateBag,再添加包含字段名称和值的名称/值对(从控件的文本框中提取)。接着,代码通过GetData方法提取DataSourceView对象,给该方法传送数组和插入完成后调用的函数。
Public Sub InsertData()
Dim InsertData As New StateBag
Dim dsv As System.Web.UI.DataSourceView
dsv = Me.GetData
If dsv.CanInsert = True Then
InsertData.Add("CustId", Ctype(Me.FindControl("tb1"), TextBox).Text)
InsertData.Add("CustName", Ctype(Me.FindControl("tb2"), TextBox).Text)
dsv.Insert(InsertData, AddressOf Me.HandleInsert)
End If
End Sub
C#的对应代码如下所示。
public void InsertData()
{
StateBag InsertData = new StateBag;
System.Web.UI.DataSourceView dsv;
dsv = this.GetData();
if(dsv.CanInsert == true)
{
InsertData.Add("CustId", ((TextBox) this.FindControl("tb1")).Text);
InsertData.Add("CustName", ((TextBox) this.FindControl("tb2")).Text);
dsv.Insert(InsertData, new DataSourceViewOperationCallback(HandleInsert));
}
}
在所有的更新完成后,就执行在Update、Delete和Insert的最后一个参数中使用的函数。它需要两个参数:更新影响的记录数和异常对象。如果在处理过程中出现错误,就把异常对象设置为错误。下面的Visual Basic 2005代码检查异常对象,如果出现了错误,就引发一个异常,让应用程序捕获它。
Function HandleInsert(ByVal affectedRecords As Integer, _
ByVal ex As Exception) As Boolean
If ex IsNot Nothing Then
Throw ex
End If
End Function
C#的对应代码如下所示。
public bool HandleInsert(int affectedRecords, Exception ex)
{
if(ex == null)
{
throw ex;
}
}






