【问题标题】:javascript function make a full postback in an update paneljavascript 函数在更新面板中进行完整回发
【发布时间】:2013-02-12 05:00:05
【问题描述】:

我在更新面板中调用以下 javascript 函数,它刷新我的页面,尽管它在更新面板中!!

<script type="text/javascript" language="javascript">
    function get_emp_num(source, eventArgs) {
        var txt_emp_num = "<%= txt_RequestEmpNum.ClientID %>";
        document.getElementById(txt_emp_num).value = eventArgs.get_value();
        __doPostBack("<%=txt_RequestEmpNum.ClientID %>");
    }

    function get_person_num(source, eventArgs) {
        var txt_person_num = "<%= txt_RequestPersonNum.ClientID %>";
        document.getElementById(txt_person_num).value = eventArgs.get_value();
        __doPostBack("<%=txt_RequestPersonNum.ClientID %>");
    }

</script>

我不希望此脚本更改我的更新面板的部分回发行为。如何做到这一点?

【问题讨论】:

  • 你使用c#标签是因为......?
  • 您是说您不想刷新页面吗?我不明白..
  • 是的,我不希望这个脚本刷新我的整个页面
  • @SonerGönül Asp.net 可能指的是 VB.NET、C# 等。我认为 C# 标记在这里很有用,以提供正确语言的代码示例
  • 你能给我们看看 updatepanel html 吗?

标签: javascript jquery asp.net ajax updatepanel


【解决方案1】:

您的回发控件是什么?它是否设置为更新面板上的异步触发器?根据您发布的代码,我怀疑 txt_RequestEmpNum 和 txt_RequestPersonNum 是文本框。这些控件本身不支持回发。您需要的是页面上的隐藏按钮,您的 javascript 将“单击”以发送回发。像这样的:

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Button1" />
    </Triggers>
    <ContentTemplate>
        <asp:TextBox ID="txt_RequestEmpNum" runat="server" />
        <asp:TextBox ID="txt_RequestPersonNum" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>
<div style="display: none;">
    <asp:Button id="Button1" runat="server" OnClick="Button1_Click" />
</div>

<script>
    function get_emp_num(source, eventArgs) {
        // I am unsure what your intent was with the code here so I removed it
        __doPostBack("<%=Button1.UniqueID %>", "");
    }

    function get_person_num(source, eventArgs) {
        // I am unsure what your intent was with the code here so I removed it
        __doPostBack("<%=Button1.UniqueID %>", "");
    }

    function refresh_using_jquery() {
        __doPostBack($('#<%=Button1.ClientID %>').attr('name'), '');
    }
</script>

【讨论】:

  • @just_name,很抱歉,太晚了,我使用了错误的标识符。 __doPostBack 需要按钮的名称属性,而不是 id。 UniqueID 应该返回该值。如果页面上有 jquery,我将添加另一个选项。
【解决方案2】:

如果您不希望进行整页回发,那么您需要实施使用 AJAX 的解决方案。我会选择使用 jQuery,因为它使使用 AJAX 变得更容易一些(在我看来,无论如何)。

【讨论】:

    猜你喜欢
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多