【问题标题】:Modal popup panel is hidden when button clicked单击按钮时隐藏模式弹出面板
【发布时间】:2013-11-11 16:11:42
【问题描述】:

我用 modalpopextender 创建了一个面板,但是当我单击面板内的按钮时,面板消失了。

这是 modalpopup 的 asp.net 代码

 <td class="style3">
                <asp:Button ID="Button5" runat="server" style="background-color: #FFFFFF" />
                <asp:ModalPopupExtender ID="answer" runat="server" DynamicServicePath="" 
                    Enabled="True" TargetControlID="Button5" PopupControlID="Panel1" CancelControlID="Button3" >
                </asp:ModalPopupExtender>
            </td>

这是用于将数据插入数据库并显示模态弹出面板的asp.net:

 string sql = "insert into questions (id,quest,mark) values (@id,@quest,@mark);select scope_identity();";
    SqlCommand x = new SqlCommand(sql, con);
    x.Parameters.AddWithValue("@id", Session["exam"].ToString());
    x.Parameters.AddWithValue("@quest", TextBox1.Text );
    x.Parameters.AddWithValue("@mark", TextBox2.Text);
    con.Open();
    Session["quest"] = x.ExecuteScalar().ToString();
    con.Close();
    answer.Show();

【问题讨论】:

  • 请不要大喊大叫,我们听得够清楚...

标签: c# asp.net ajaxcontroltoolkit


【解决方案1】:

如果你回发到服务器,你必须显示ModalPopupExtender,你可以使用Page_PreRender

protected void Page_PreRender(object sender, System.EventArgs e)
{
    answer.Show();
}

【讨论】:

  • 我想在单击按钮时显示模式弹出窗口,但在这种情况下,即使未单击按钮,它也会始终显示模式弹出窗口。
  • @user2979806:总是使用大写文本意味着大喊大叫。请不要大喊大叫。如果您不知道是否需要大写或小写,最好始终使用小写(每个句子开头的大写)。您可以在您的页面/用户控件PopupVisible 中提供一个属性,该属性从按钮单击事件设置为true。然后您可以在Page_PreRender 中检查该属性。
【解决方案2】:

当您单击面板中的按钮时,会导致完整的回发。在这种情况下,它会将页面返回到原始状态,并忽略打开的模式面板。

我建议将更新面板放在面板内,并将所有面板内容放在更新面板内。

这将告诉 asp.net 只进行部分回发,并且只刷新更新面板内的控件。

【讨论】:

  • 很可能他使用了UpdatePanels,所以也很可能是异步回发。但是,他仍然需要在服务器端调用popup.Show
  • 如果更新面板位于模态框内,则不会。模态面板的视觉状态根本不会改变。
  • 好的,但他可以将弹出窗口放在另一个 UpdatePanel 周围。但由于我们没有看到更多,这只是猜测:)
  • 该场景也有解决方法。我无法假设他的标记中有什么或没有什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2019-02-07
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多