关于ICallbackEventHandler 的问题请教

yidong2007 2008-11-30 01:08:16
我想通过实现ICallbackEventHandler 接口的方法来接收客户端传过来的参数,在服务器端查询数据并重新绑定页面数据,但是我在调试的时候,发现在服务器端是重新绑定了,可以页面的数据没有更新。小弟对这方面认识尚浅,请各位大虾赐教,谢了!
代码如下

#region ICallbackEventHandler 成员实现
/// <summary>
/// ICallbackEventHandler 成员
/// </summary>
private string strCallBackValue = string.Empty;
public string GetCallbackResult()
{
return strCallBackValue;
}

public void RaiseCallbackEvent(string eventArgument)
{
strCallBackValue = eventArgument;
//重新绑定页面数据的方法
IniteData();
}
#endregion
...全文
194 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenglipaopao 2009-03-04
  • 打赏
  • 举报
回复
public void RaiseCallbackEvent(string eventArgument) {
this.navigationControl.BindChapters("1");//这里根据传入参数进行数据的绑定
}
public string GetCallbackResult() {
return this.navigationControl.RenderControl();//这是用户控件,RenderControl方法返回了控件的InnerWriter(这里是重点,简单的说,返回的就是你要显示的数据控件的HTML)
}
这里还是有点不理解
能具体的再讲讲吗? 谢谢
clss84 2008-12-30
  • 打赏
  • 举报
回复
有人能解释下:我用icallbackeventhandler实现的无刷新页面,为什么在firefox、opera浏览器中无法预览,其他都可以!!!
Jiaowei85 2008-11-30
  • 打赏
  • 举报
回复
首先,你对ICallbackEventHandler机制的理解有误,请重新查阅相关资料.

[Quote=引用 1 楼 zlb789 的回复:]
ICallbackEventHandler 、

这个只能是返回一个字符串 不能实现重新绑定

用ajax

.net 自带的相关控件
[/Quote]

ICallbackEventHandler当然可以用于数据绑定,示例代码如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
CallbackArgs();
}
}

public void RaiseCallbackEvent(string eventArgument) {
this.navigationControl.BindChapters("1");//这里根据传入参数进行数据的绑定
}

public string GetCallbackResult() {
return this.navigationControl.RenderControl();//这是用户控件,RenderControl方法返回了控件的InnerWriter(这里是重点,简单的说,返回的就是你要显示的数据控件的HTML)
}

private void CallbackArgs() {
this.btn1.Attributes["onclick"] = Page.ClientScript.GetCallbackEventReference(this, "", "GetChapterName", "");//这里将方法GetChapterName绑定到按钮.
}

在源中,或者在js文件中加入GetChapterName方法,定义显示数据控件的控件(绕口~,通常是个Label)
<script language="javascript" type="text/javascript">
function GetChapterName(result){
document.getElementById("span1").innerHTML=result;
}
</script>

这样就可以实现根据传入参数绑定数据,使用ICallbackEventHandler与使用XMLHttpRequest非常相似,而与用UpdatePanel来实现相比,如果你抓包的话,就可以知道性能提升很明显.我不赞同所有的回调都用UpdatePanel来实现,虽然非常方便和高效(开发用时),但是盲目地使用UpdatePanel,特别是对AJAX没有清楚认识的情况下使用大量的UpdatePanel,将会是非常糟糕的事情.

但是如同sp1234说的那样,完全用ICallbackEventHandler开发一个企业项目时将不很可行.
相关资料请到WebCasts观看苏鹏主讲的"ASP.NET快速入门",第十五讲-ASP.NET开发小技巧
js1722 2008-11-30
  • 打赏
  • 举报
回复
IniteData();
放在这里执行是没效果的。
DavidNoWay 2008-11-30
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
输出的东西要写到 strCallBackValue 中,而你什么也没有写出去。

我不提供什么解决方案了,因为从实际项目开发角度,这个方法无法完成完整的交互式程序设计功能。所以像1楼一样,建议你使用updatepanel或者调用ScriptMethodAttribute标记的web服务两种asp.net ajax编程方式。
zlb789 2008-11-30
  • 打赏
  • 举报
回复
ICallbackEventHandler 、

这个只能是返回一个字符串 不能实现重新绑定

用ajax

.net 自带的相关控件

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧