在IAsyncResult无效的情况下更新updatepanel内的DataRepeater!

时间:2010-10-14 08:53:52

标签: asp.net vb.net updatepanel iasyncresult

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

Dim caller As New AsyncMyFunction(AddressOf MyFunction)

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

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

这是Callback方法:

 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”但是我的页面上没有显示任何内容,即使数据在我调试时被传递给数据中继器内的控件。

1 个答案:

答案 0 :(得分:0)

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