UpdatePanel内的ASP.NET标签未更新

时间:2011-09-24 12:10:20

标签: asp.net ajax asp.net-ajax updatepanel

我是ASP.NET的新手,我正在尝试使用在按下按钮时抓取的一些信息来更新Label。调用click函数并返回正常(我调试并逐步完成整个过程)。唯一不起作用的是我设置我正在尝试更新的标签的文本。

这是在按钮点击时调用的函数:

Protected Sub submitbutton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles submitbutton.Click
        Dim res As String() = query(email1.Text)
        If Not res Is Nothing Then
            url1.Text = res(0)
            date1.Text = res(1)
        End If

    End Sub

我知道它会进入if并尝试设置文本,但客户端没有任何反应。

这是我的UpdatePanel:

<asp:UpdatePanel ID="UpdatePanelSettings" runat="server" UpdateMode="Always"  >
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="submitbutton" EventName="click" />
        </Triggers>
        <ContentTemplate>
            <table>
                <tr>
                    <td>Emails</td><td>Url Parsed</td><td>Date Created</td>
                </tr>
                <tr>
                    <td>
                        <asp:TextBox runat="server" ID="email1" Width="300" />
                    </td>
                    <td>
                        <asp:Label runat="server" ID="url1" Text="-" />
                    </td>
                    <td>
                        <asp:Label runat="server" ID="date1" Text="-" />
                    </td>
                </tr>
                <tr>
                    <td colspan="3"><asp:Button ID="submitbutton" runat="server" Text="Submit" /></td>
                </tr>
            </table>
        </ContentTemplate>
    </asp:UpdatePanel>

正如我所说,我知道触发器有效,因为我在调用代码时已经完成了代码。我知道你还需要一个ScriptManager,我在Site.Master文件中的form元素内部(我真的只是在默认模板中插入了东西。它只是一个概念证明项目)。

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />

从我在网上找到的所有文章中,这应该是我所需要的。一篇文章提到必须使用Web.Config做事,但它说VS 2005并且我使用2010.它提到你在2008年没有必要改变任何东西,所以我认为2010年也是如此。我错过了什么,我需要更新标签?

3 个答案:

答案 0 :(得分:3)

您可以尝试删除该部分。

<Triggers>
<asp:AsyncPostBackTrigger ControlID="submitbutton" EventName="click" />
</Triggers>

然后通过将ChildrenAsTriggers =“true”添加到其中来更改UpdatePanel。

<asp:UpdatePanel ID="UpdatePanelSettings" runat="server" UpdateMode="Always" ChildrenAsTriggers="true"  >

理论上,这应该与上面的方式完全相同,但只是试图帮助你调试它。

答案 1 :(得分:3)

我暂时没有使用它,但你可能需要明确地调用:

UpdatePanelSettings.Update()

在你的命令结束时。

无论如何都试一试。

答案 2 :(得分:1)

1)res是否可能是两个空白项目?

2)是否还有其他代码触及两个标签(例如表单加载时)?