0

我在使用 ISyncResult 时无法将数据绑定到数据转发器。这就是我正在做的事情。更新面板中有一个按钮,它从用户那里获取输入并调用一个函数,该函数返回一个数据集,然后我将其绑定到也在更新面板内的数据转发器。我所做的是我为这个函数做了一个委托,现在我像这样调用这个函数

Dim caller As New AsyncMyFunction(AddressOf MyFunction)

然后我像这样制作一个 IASyncResult :

 Dim result As IAsyncResult = caller.BeginInvoke(argument1, argument1, AddressOf MyFunctionCallBack, Nothing)

这是回调方法:

 Sub MyFunctionCallBack(ByVal ar As IAsyncResult)
    Dim result As AsyncResult = CType(ar, AsyncResult)
    Dim caller As AsyncMyFunction = CType(result.AsyncDelegate, AsyncMyFunction)
    Dim ds As New DataSet
    ds = caller.EndInvoke(ar) 
    MyRep.DataSource = ds
    MyRep.DataBind()

End Sub

我很难弄清楚为什么数据转发器没有显示数据。在调试这个时,我看到数据集正在获取数据并传递“ds”,但我的页面上没有显示任何内容,即使在我调试时数据正在传递给数据转发器内部的控件。

4

1 回答 1

0

它不是那样工作的。BeginInvoke() 是一种调用异步方法的方法,但这并不意味着它可以与异步回发一起使用。BeginInvoke() 在本地环境中是异步的,而异步回发只是远程环境的部分 html 更新。这是两件不同的事情。你需要完成你的数据集 b4 你调用 databind

于 2010-10-14T09:22:54.920 回答