首页 新闻 会员 周边 捐助

.net4.0回调技术

0
悬赏园豆:20 [已解决问题] 解决于 2017-04-15 23:36

实现一个功能:

环境:asp.net 4.0,webform,GridView数据绑定,Jquery

GridView后台数据绑定,可以增加新行,也可以删除当前行数据

没有使用自带的commandargument和RowCommand事件,不借助第三方控件

 

目的:使用客户端回调技术,并配合.RenderControl(HtmlTextWriter)技术(返回服务器控件的html)实现局部刷新。

 

问题:在网上看了好多都是关于.net 2.0回调的文章,继承ICallbackEventHandler接口,并实现RaiseCallbackEvent和GetCallbackResult两个方法,在前台触发回调函数后页面还是会刷新……百思不得其解,还望不吝指教。

 

后台代码如下:

    public partial class WebForm1 : System.Web.UI.Page, ICallbackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ClientScriptManager csm = Page.ClientScript;
                string reference = csm.GetCallbackEventReference(this, "args", "Success", "", true);
                string callbackScript = "function CallServer(args,context){\n" + reference + ";\n}";
                csm.RegisterStartupScript(this.GetType(), "callserver", callbackScript, true);

                BtnAdd.Attributes.Add("onclick", "CallServer('add',null)");
                BindData();
            }
        }

        private void BindData()
        {
            //……数据绑定
        }

        protected string RenderControlHtml(Control ctl)
        {//返回控件产生的html
            string strHtml;
            using (var sw = new StringWriter())
            {
                using (var writer = new HtmlTextWriter(sw))
                {
                    ctl.RenderControl(writer);
                    strHtml = sw.ToString();
                    writer.Close();
                }
                sw.Close();
            };
            return strHtml;
        }

        private string _strResult;
        public string GetCallbackResult()
        {
            return _strResult;
        }

        public void RaiseCallbackEvent(string eventArgument)
        {
            _strResult = eventArgument ;
        }
    }

//前台JS

    <asp:Button ID="BtnAdd" runat="server" Text="回调" />
    <script type="text/javascript">
        function Success(args, context) {
            // alert(args);
            $('#cd').html(args + '<h2>ssssssssssssss</h2>');
            alert(context);
        }
    </script>

智伟的主页 智伟 | 菜鸟二级 | 园豆:266
提问于:2014-08-15 00:58
< >
分享
最佳答案
0

学下ajax吧,比你这个东西容易多了

收获园豆:10
吴瑞祥 | 高人七级 |园豆:29449 | 2014-08-15 09:22
其他回答(1)
0

用这两个不是可以实现局部吗

收获园豆:10
wolfy | 园豆:2636 (老鸟四级) | 2014-08-15 13:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册