【问题标题】:Update UpdatePanel from called WebMethod从调用的 WebMethod 更新 UpdatePanel
【发布时间】:2013-03-24 05:05:47
【问题描述】:

我有这个代码:

<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        $('#refreshDocuments').click(function () {
            var areaId = 42;
            $.ajax({
                type: "POST",
                url: "Test.aspx/TimeTest",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    alert(data.d);
                }
            });
        });
    });
</script>

.......

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Label ID="lblTime" runat="server" Text="Label"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

....... 测试.cs

[System.Web.Services.WebMethod]
    private void TimeTest()
    {
        lblTime.Text = DateTime.Now.ToString();
        UpdatePanel1.Update();``
    }

按下此按钮时会调用 TimeTest 方法:

<id="refreshDocuments">Test</a>

我的问题是: 如何更新标签以满足我的需求?

谢谢!

【问题讨论】:

  • UpdatePanel中除了这个链接还有服务器控件吗?
  • 我的错。在我的示例中,该链接位于更新面板之外。在更新面板中实际上是应该更新的其他控件。该页面包含一个填充数据的 GridView。 GridView 位于 UpdatePanel 内部,外部是过滤器。当按下刷新按钮(我的示例中的链接)时,GridView 应该刷新数据。谢谢你的回答!

标签: c# jquery asp.net updatepanel webmethod


【解决方案1】:

实际上我的意思是一个标签(我的错误)。一路上,TimeTest方法中的UpdatePanel是无法刷新的。此外,此方法必须为 public static 以允许使用 JavaScript 中的 jQuery.ajax 方法异步调用它。在这里阅读更多:Using jQuery to directly call ASP.NET AJAX page methods

您可以做的是使用LinkButton 控件并将其注册为UpdatePanel 的AsyncPostBackTrigger 并在此LinkBut​​ton 的Click 事件处理程序中执行所有工作

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Label ID="lblTime" runat="server" Text="Label"></asp:Label>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="refreshDocuments" />
    </Triggers>
</asp:UpdatePanel>
<asp:LinkButton runat="server" ID="refreshDocuments" 
    Text="Click Me" OnClick="refreshDocuments_OnClick" />

protected void refreshDocuments_OnClick(object sender, EventArgs e)
{
    //refresh controls in UpdatePanel1
    //UpdatePanel1 will be refreshed automatically
}

【讨论】:

  • 谢谢!我以前试过这个,但是点击刷新了我所有的页面,这不是很好。我可能犯了一个错误。现在可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 2014-08-19
  • 2011-08-16
相关资源
最近更新 更多