首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我在SharePoint WebPart中的输入不能更改值?

为什么我在SharePoint WebPart中的输入不能更改值?
EN

Stack Overflow用户
提问于 2018-01-28 11:42:59
回答 2查看 36关注 0票数 0

我尝试使用webpart.ascx.cs中的计时器每隔n秒更改一次隐藏输入的值,以便稍后在JavaScript中检索该值,但该值似乎永远不会更改。你能帮我找出原因吗?

下面是我想要做的一个例子:

代码语言:javascript
运行
复制
//Initialising the timer
protected void Page_Load(object sender, EventArgs e)
{
    Timer timer = new Timer(10 * 1000);
    timer.Elapsed += new ElapsedEventHandler(changeValue);
    timer.Start();
}

private void changeValue(Object source, ElapsedEventArgs e)
{
    myInput.Value = "Changed Value";
}

然后,在我的ascx中,我有这样的输入:

代码语言:javascript
运行
复制
<input id="myInput" type="hidden" runat="server" />

如果我在Page_Load中调用changeValue,输入值确实会发生变化,但当随后使用计时器调用它时,该值在Javascript端保持不变。

代码语言:javascript
运行
复制
//Work for the first time, but not when the timer elapsed.
var myInputValue = document.getElementById("myInput").value;

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-29 01:49:49

我按照@tigerdi的建议查找了UpdatePanels,并且我能够使用ASP计时器从服务器端更新html。下面是我找到的解决方案:

这是我的UpdatePanel和定时器。

代码语言:javascript
运行
复制
<asp:UpdatePanel id="updatePanel" runat="server" `UpdateMode="Conditional">
<ContentTemplate>
    <asp:Timer ID="timer" OnTick="timer_Tick" Interval="10000" runat="server"></asp:Timer>
    <input id="myInput" type="hidden" runat="server" />
</ContentTemplate>

然后使用事件更新,我可以更改输入的值,然后调用UpdatePanel timer_Tick ()函数,如下所示

代码语言:javascript
运行
复制
protected void timer_Tick(object sender, EventArgs e)
{
    myInput.Value = "Changed Value";
    updatePanel.Update();
}
票数 0
EN

Stack Overflow用户

发布于 2018-01-28 13:58:24

计时器代码和计时器对象都在服务器端代码中运行。页面加载后,服务器端代码就不能更改客户端HTML。如果您希望标记每隔n秒/毫秒更新一次,那么您应该使用客户端Javascript setTimeout(函数,毫秒)或setInterval(函数,毫秒)。

https://www.w3schools.com/js/js_timing.asp

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48482965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档