开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 3212|回复: 0

用aspxcallback实现LABEL的动态刷新

[复制链接]

0

精华

0

贡献

16

赞扬

帖子
7
软币
141
在线时间
8 小时
注册时间
2018-5-28
发表于 2018-6-10 16:56:26 | 显示全部楼层 |阅读模式
我用了两个Callback一个用来启动刷新进程,一个用来动态显示进程信息。通过一个按钮启动调用第一个CallBack,又用了timer自动每500ms调用第二个CallBack, 但在IE调试总是报第二个的Uncaught ReferenceError: myCallback2 is not defined. 这个再三确认过,前台和后台都已定义过了,不知哪位大神能指点一下怎么回事。代码如下:客户端代码:

<dxe:ASPxButton ID="ASPxButton1" runat="server" AutoPostBack="False" ClientInstanceName="mybutton"
            Text="ASPxButton">
            <ClientSideEvents Click="function(s, e) {
                                              s.SetEnabled(false);

                                              myLabel.SetText('Process completion: 0% ');
                                              myLabel.SetClientVisible(true);
                                              myTimer.SetEnabled(true);
                                              myCallback1.PerformCallback();
                                              }" />
        </dxe:ASPxButton>

        <dxcb:ASPxCallback ID="ASPxCallback1" runat="server"
            ClientInstanceName="myCallback1">
            <ClientSideEvents CallbackComplete="function(s, e) {
                                                              myButton.SetEnabled(true);
                                                              myTimer.SetEnabled(false);
                                                              myLabel.SetText('Process completed');
                                                              }" />
        </dxcb:ASPxCallback>
        <dxcb:ASPxCallback ID="ASPxCallback2" runat="server"
            ClientInstanceName="myCallback3">
            <ClientSideEvents CallbackComplete="function(s, e) {
            var labelText = myLabel.GetText();
           if(labelText != 'Process completed'){
           myLabel.SetText('Process completion: ' + e.result + ' ');
                                                              }" />
        </dxcb:ASPxCallback>
        <dxt:ASPxTimer ID="ASPxTimer1" runat="server" Interval="500">
            <ClientSideEvents Tick="function(s, e) {
                    myCallback3.PerformCallback();
                }" />
        </dxt:ASPxTimer>



        <dxe:ASPxLabel ID="ASPxLabel1" runat="server" Text="测试"
            ClientInstanceName="myLabel" ClientVisible="False" >
        </dxe:ASPxLabel>

C#服务端代码
public partial class progress : System.Web.UI.Page
    {
        private static int pro;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack && !IsCallback)
            {
                pro = 0;
            }
        }

        protected void ASPxCallback1_Callback(object source, DevExpress.Web.CallbackEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                pro = i;
                System.Threading.Thread.Sleep(1000);
            }
        }

        protected void ASPxCallback2_Callback(object source, DevExpress.Web.CallbackEventArgs e)
        {
            e.Result = pro.ToString();
        }




回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-22 19:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表