繁体   English   中英

在带有主文件的ASP.NET 2.0页面上使用Java Timer

[英]Java Timer use on an ASP.NET 2.0 page with Master File

我发现有时您想做的最简单的事情几乎不可能为答案提供资金。 我在Visual Studio 2005中编程的ASP.NET V2中有一个ASPX页。ASPX页具有背后的代码ASXP.VB页,并绑定到.master文件。 我有两个按钮[Button_Process],它们最终将调用一个程序,该程序将从SQL表中提取数据-在这里没有问题。 [Button_Process]还将调用一个JavaScript计时器,该计时器持续7秒(提取足够的时间)。 我们正在执行计时器延迟,因此会出现一个可爱的小图形,并使使用该页面的人认为系统正在运行,而不是双击按钮-我知道还有其他方法可以这样做,但这是我们知道的方法) 。 同样,这里没有问题。 单击[Button_Process]按钮七秒钟后,用aleart测试会发送一条消息。 到目前为止,世界上一切都很好。

我还有第二个按钮[Button_PM_Upload],在此期间处于隐藏状态。 最终,它将在单击按钮时调用一个程序,以收集上一次单击按钮收集的信息,将其与第二个SQL表中的数据进行比较,并更新第二个SQL表。 我要做的就是在七秒钟后使第二个按钮可见。 我的任务很简单,但是在寻找解决方案时遇到了问题。

在head标签之间的母版页中,此计时器代码非常有效:

<script type="text/javascript">
<!--
var secs
var timerID = null
var timerRunning = false
var delay = 1000

function InitializeTimer()
{
    // Set the length of the timer, in seconds
    secs = 7
    StopTheClock()
    StartTheTimer()
}

function StopTheClock()
{
    if(timerRunning)
        clearTimeout(timerID)
    timerRunning = false
}

function StartTheTimer()
{
    if (secs==0)
    {
        StopTheClock()
        // Here's where you put something useful that's
        // supposed to happen after the allotted time.
        // For example, you could display a message:
        alert("The timer is working properly")
        //document.getElementsByName ("Button_PM_Upload").style.display=
         "block";          
    }
    else
    {
        self.status = secs
        secs = secs - 1
        timerRunning = true
        timerID = self.setTimeout("StartTheTimer()", delay)
    }
}
//-->
</script>

在ASPX.VB后面的代码页上,是该按钮单击的代码,它的效果也很好:

Protected Sub Button_Process_OnClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button_Process.Click
    'This code fires of the timer in the master file
    ClientScript.RegisterStartupScript(GetType(Page), "Startup", "<script type=text/javascript>InitializeTimer()</script>")
End Sub

经过几天的阅读和研究,我发现计时器是在客户端,后面的代码是在服务器端,并且“两者永远不要说话”。 NET上的文章说,要使第二个按钮可被javascript“抓取”,我必须说(visible = false)使其在timer之前不可见,该定时器在服务器端,并且不会在客户端传递按钮,我需要调整显示命令。 该代码位于该按钮的ASPX页面上,并在源代码中如下所示:

<asp:Button ID="Button_PM_Upload" runat="server" Style="display: none; left: 632px;
position: absolute; top: 252px; z-index: 104;" Text="Upload to PartsMaster"
ToolTip="Change PR codes and Descriptions"  Width="147px" />

正如我的哥哥在我们青年时代所说的那样:“在这一点上,一切都是笨拙的”。 文章说的下一部分在作者之间有所不同。 但是,所有人都有一个严密的解决方案,但不知道将代码放置在何处。 我一直将其放在母版页Javascript中的警报下。 这是我得到的:

document.getElementsByName("Button_PM_Upload").style.display="block";

给我-按钮保持隐藏

document.getElementsByName("Button_PM_Upload").style.display='block';

给我-按钮保持隐藏

document.getElementsByName('Button_PM_Upload').style.display='block';

给我-按钮保持隐藏

document.getElementsByName('Button_PM_Upload').style.display="block";

给我-按钮保持隐藏

每当我用块代替内联(一个建议)时,所有四个代码行都给我相同的结果(什么都没有)。 每当我用block代替可见的(另一个建议)时,所有四个代码行都给我相同的结果。 每当我用内联替换块(另一个建议)时,所有四个代码行都给我相同的结果。

我确实找到了将服务器代码放入-(“ <%= Button_PM_Upload%>”)-的示例,但我得到的只是一个错误(无论如何安排),其内容如下:BC30451:名称为'Button_PM_Upload '未声明。

我的网站在项目的根目录上具有母版页。 根目录上还有一个名为[PSC_Tools]的文件夹。 我的ASPX和ASPX.VB页面位于该文件夹中,我想知道它是否可能是一个简单的路径问题。 无论是什么,我都停滞不前-有时最简单的事情是最难找到的代码。 Ajax工具是不可能的。 该站点是在没有它们的情况下开发的,如果将其导入,它们会干扰运行该站点的配置文件。

我在某处缺少代码吗? 我不导入东西吗? 这与config或css文件有关吗? 我很茫然。 我碰到了您的站点,可能会感觉到收集到的智力的热度以及从监视器中渗出的经验。 希望我遵守提出问题的规则,并非常感谢您能提供的任何帮助。 作为帮助,您可以让我确切知道代码应该在什么地方以及在什么页面(ASPX,ASXP.VB,.master)上。

周末愉快

有一个简单的解决方法:将按钮包装在div中:

<div id="x"><asp:Button/></div>

然后隐藏并显示div。

如果要禁用该按钮,请使用jQuery,如下所示:

$('#x button').attr('disabled', 'disabled');

诀窍是通过包装元素引用按钮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM