当前位置:编程学习 > C#/ASP.NET >>

用户控件 回传问题

委托定义:
//ResultType枚举类型,用于传入选择结果
    public delegate void EventNotes(ResultType result);
用户控件(一个自定义的对话框)中定义监听的事件:
        //时间--存放监听方法
        public static EventNotes eventNotesContent;
用户初始化方法:
        /// <summary提示窗体,并具有一个提示的标题
        /// </summary
        /// <param name="events">选择结果通知事件</param>
        /// <param name="title">提示信息的标题</param>
        /// <param name="message">用于显示的提示信息</param>
        /// <param name="messageType">窗体提示类型(包含哪些按钮)</param>
        public void init(EventNotes events, string title, string message, MessageType messageType)
        {
            //把events添加到定义的事件中(覆盖)
            eventNotesContent=events;
            ................................
        }
用户点击用户控件时,启用事件,列如点击确定
        protected void but_ok_Click(object sender, ImageClickEventArgs e)
        {
            ...................
            eventNotesContent(ResultType.OK);
        }
Page调用用户控件(按钮事件):
this.WUC_dialogue1.init(promptDialogue, "是否进行当前操作", message, MessageType.ConfirmAndCancel);
Page定义的监听方法:
//获取提示窗体的通知结果
        void promptDialogue(ResultType result)
        {
            if (result == ResultType.OK)
            {
                int updateResult = ..........
                if (updateResult == 1)
                {
                    this.WUC_dialogue1.init(endDialogue, "更新成功", "Message", MessageType.Confirm);
                }
                else
                {
                 this.WUC_dialogue1.init(endDialogue, "更新失败", "Message", MessageType.Confirm);
                }
            }
        }
         void endDialogue(ResultType result)
        {
            this.WUC_dialogue1.Visible = false;
        }
简约的运行流程:
在Page页面点击一个按钮,init一个用户控件(WUC_dialogue1),用promptDialogue监听用户在用户控件上的选择结果,如点击取消,则终止操作,如果是点解的OK,则继续执行逻辑
比如更新操作,获取更改结果,重新初始化用户控件,更改提示信息,重新显示

 
废话一大堆,流程就这样,断点调试,流程上面,一切OK,但就是在监听方法promptDialogue运行效果不能在UI上面展示 --------------------编程问答-------------------- 没看懂.......... --------------------编程问答-------------------- 意思就是在窗体监听方法promptDialogue运行的时候,调试一切正常,就是在promptDialogue里面做的修改不能体现在页面上面,一种后台与页面不同步的效果
--------------------编程问答-------------------- 哦,忘了说一个症状了,就是监听方法启用的时候,会运行用户控件的Load事件,然后再运行监听方法,每次运行的时候,顺序是这样的,但在Load里面做的修改能在页面上面体现,而后者所做的一切修改都不能,但如果用监听递归监听的话,调试可以看到上次监听事件所做的修改已经被修改
问题再说简单点就是在页面里面向用户控件里面定义的一个委托添加了一个方法,在用户控件里面触发的时候,运行所添加的方法在后台看一切正常,但就是无法把运行的效果在浏览器里面展示出来,但在用户控件Load事件运行的一些操作又能在页面上面体现
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,