带有Button / LinkBut​​ton的UpdatePanel不起作用

时间:2018-11-21 10:52:32

标签: c# asp.net button postback linkbutton

我正在尝试解决按钮/链接按钮的问题(两者都不起作用)。 问题如下:

我有一个导航菜单,用户可以在其中选择要重定向到的“选项卡”(多视图视图)。在这个菜单中,我有一些按钮/链接按钮,它们应该更新updatepanel。 但是它并不会这样做-它总是更新整个页面。

我的一些ASCX代码:

    <div class="row">
                <label style="margin-left: 15px">Menu</label><br />
                <div class="col-sm-4 col-md-3 sidebar">
                    <div class="mini-submenu">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </div>
                    <div class="list-group">
                        <span class="list-group-item active">Woundmanagement

                            <span class="pull-right" id="slide-submenu">
                                <i class="fa fa-times"></i>
                            </span>
                        </span>
                          <asp:Button ID="Button_1" runat="server" Text="Wundbeschreibung" CssClass="list-group-item" OnClick="nav_btn_1_Click" />
...
more items in the dropdownmenu

</div>...

单击按钮时应触发的事件:

protected void nav_btn_1_Click(object sender, EventArgs e)
        {
            MultiView1.ActiveViewIndex = 1;

        }

我搜索了2个小时,然后尝试了所有可能的解决方案- 到目前为止我尝试过的操作:

  • 在更新面板的内部和外部放置按钮和菜单-不会改变问题

  • 添加了PostbackTrigger

      <asp:PostBackTrigger ControlID="Button_1"/>
    

通过这种方式,我的按钮可以正常工作,但是页面仍被重新加载

  • 然后我添加了asyncPostbackTrigger

      <asp:AsyncPostBackTrigger ControlID="Button_1" EventName="Click"/>
    

如果我现在单击按钮,什么也没发生。

  • 我尝试将有条件的UpdateMode添加到updatePanel

      <asp:ScriptManager ID="ScriptManager1" runat ="server"> 
      </asp:ScriptManager>
      <asp:UpdatePanel ID="UP_Woundmanagement" runat="server" 
      UpdateMode="Conditional">
    
  • 我将<Triggers>移到了updatePanel的前面和updatePanel的后面

  • 我在页面指令中添加了ClientIDMode="AutoID"

  • 使用LinkBut​​ton尝试了相同的事情

我真的不知道我可以进一步尝试使它起作用,如果你们中的某人有一个主意,那将是很棒的! :)

1 个答案:

答案 0 :(得分:1)

我不明白您为什么不共享updatepanel aspx代码。在更新面板之前或之后触发标签。

<script runat="server">
   protected void Button1_Click(object sender, EventArgs e)
   {
     Label1.Text = "Refreshed at " + DateTime.Now.ToString();
   }
</script>

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" />
        </Triggers>
    </asp:UpdatePanel>
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 
</div> 

如果触发器对象位于UpdatePanel中,则应将 ChildrenAsTrigger 设置为true。而且,如果您在ContentPlaceHolder中使用更新面板,那么本文将对您有所帮助。 https://msdn.microsoft.com/tr-tr/library/bb398864(v=vs.100).aspx