我想通过实现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

解决方案 »

  1.   

    ICallbackEventHandler  、 这个只能是返回一个字符串  不能实现重新绑定用ajax   .net 自带的相关控件
      

  2.   

    输出的东西要写到 strCallBackValue 中,而你什么也没有写出去。我不提供什么解决方案了,因为从实际项目开发角度,这个方法无法完成完整的交互式程序设计功能。所以像1楼一样,建议你使用updatepanel或者调用ScriptMethodAttribute标记的web服务两种asp.net ajax编程方式。
      

  3.   

       IniteData();
    放在这里执行是没效果的。
      

  4.   

    首先,你对ICallbackEventHandler机制的理解有误,请重新查阅相关资料.
    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开发小技巧
      

  5.   

    有人能解释下:我用icallbackeventhandler实现的无刷新页面,为什么在firefox、opera浏览器中无法预览,其他都可以!!!
      

  6.   

    public void RaiseCallbackEvent(string eventArgument) { 
            this.navigationControl.BindChapters("1");//这里根据传入参数进行数据的绑定 
        } 
     public string GetCallbackResult() { 
            return this.navigationControl.RenderControl();//这是用户控件,RenderControl方法返回了控件的InnerWriter(这里是重点,简单的说,返回的就是你要显示的数据控件的HTML) 
        } 
     这里还是有点不理解
    能具体的再讲讲吗? 谢谢