【问题标题】:UpdatePanel Does Not Update with Preloaded DataUpdatePanel 不使用预加载的数据进行更新
【发布时间】:2012-01-18 19:23:43
【问题描述】:

我有一个更新面板,里面有一些文本框和一个按钮。当文本框中没有预加载任何内容并且我输入数据并单击按钮时,更新面板工作正常,但是当数据预加载到文本框 onload 时,更新面板不会更新我的数据并且服务器不会抓取数据被输入到文本框。下面是一个示例代码。请帮忙。

    <asp:UpdatePanel runat="server" id="UpdatePanel1" UpdateMode="Conditional">           
        <ContentTemplate>
            <asp:TextBox runat="server" Columns="30" MaxLength="50" ID="tbxPhone" onblur="PhoneBlur(this)"></asp:TextBox>
            <asp:Button ID="findOrderBtn" runat="server" OnClientClick="test()" OnClick="btnSearch_Click" Text="Search..." />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="findOrderBtn" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>

下面是后面的代码示例:

protected void btnSearch_Click(object sender, EventArgs e)
{
    string phone = tbxPhone.Text;
}

因此,如果 tbxPhone 文本框在 page_load 上最初是“555-555-5555”,我将其更改为“222-222-2222”并单击“搜索...”按钮,则返回的数据为“555-555- 5555”而不是“222-222-2222”

【问题讨论】:

  • 当您说UpdatePanel 不更新您的数据并且服务器不抓取数据时,您是什么意思?你指的是什么数据?
  • 当数据预加载到文本框时,我尝试修改文本框中的文本。然后点击按钮。它进入服务器端“btnSearch_Click”函数并尝试从文本框中获取数据,如“tbxPhone.Text”。返回的数据是原始数据,而不是文本框中输入的新数据。
  • 我很难理解上下文,你能展示一些代码隐藏吗?
  • 什么时候设置文本框中的数据?听起来您是在生命周期中已经设置 ViewState 之后设置它。
  • 哦,我明白了,那么在我将新数据输入到文本框之后,如何让视图状态进行修改,然后提交才能从文本框中获取新数据?

标签: asp.net updatepanel


【解决方案1】:

下面是示例供您尝试:

1.在表单上添加脚本管理器

2.添加更新面板并这样做

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox runat="server" Text="222-222-222" ID="txtValue"></asp:TextBox>
            <asp:Button ID="btnsubmit" runat="server" Text="Button" />
            <asp:Label ID="lblValue" runat="server" Text="Label"></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>

在 button_Click 事件上:

Protected Sub btnsubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsubmit.Click
        lblValue.Text = txtValue.Text
    End Sub

【讨论】:

    【解决方案2】:

    我有一个 Page_Load,它调用一个函数来将数据预加载到我的文本框中。一旦我点击搜索按钮更新我的面板,我意识到它再次通过 Page_Load,因此我输入到文本框中的数据被原始预加载的数据覆盖了。

    将 !IsPostBack 添加到我的 Page_Load 并解决了我的问题。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // Code Here
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 2020-10-01
      • 2020-02-28
      • 1970-01-01
      • 2020-01-01
      相关资源
      最近更新 更多