2013-07-02 10 views
2

У меня есть этот скрипт в ASP.NET/C# - я пытаюсь контролировать, когда показывать всплывающее окно всплывающего окна и в качестве предварительного теста я специально поручаю всплывающему расширителю не показывать ни при каких условиях.Как сказать BalloonPopupExtender отключить себя и не показать?

Но он по-прежнему показывает по щелчку ..

Как сказать BalloonPopupExtender отключить себя и не показывать на всех?

(Позже я хотел бы включить его снова, чтобы показать - но эта информация просто дать законченном почему я хочу его там в первую очередь ..)

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Test Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
    <div> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
     <asp:Panel ID="Panel1" runat="server"> 
      Balloon Information1 
     </asp:Panel> 
     <ajaxToolkit:BalloonPopupExtender ID="BalloonPopupExtender1" runat="server" BalloonPopupControlID="Panel1" TargetControlID="Label1" 
      DisplayOnClick="False" DisplayOnFocus="False" DisplayOnMouseOver="False"></ajaxToolkit:BalloonPopupExtender> 
    </div> 
    </form> 
</body> 
</html> 

ответ

0

Спасибо за ответы, я ценю это.

Я нашел простой способ, и в конечном итоге изменения кода следующим образом, чтобы обеспечить контроль воздушного шара внешний вид:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestPage.aspx.cs" Inherits="d.TestPage" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Test Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
    <div> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 

     <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 

     <asp:Panel ID="Panel1" runat="server"> 
      Balloon Information1 

      <ajaxToolkit:BalloonPopupExtender ID="BalloonPopupExtender1" runat="server" BalloonPopupControlID="Panel1" TargetControlID="Label1" 
       DisplayOnClick="False" DisplayOnFocus="False" DisplayOnMouseOver="False"></ajaxToolkit:BalloonPopupExtender> 

     </asp:Panel> 

    </div> 
    </form> 
</body> 
</html> 

И это код позади:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace d 
{ 
    public partial class TestPage : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      Panel1.Visible = !Panel1.Visible; 

      //BalloonPopupExtender1.DisplayOnClick = false; 
     } 

    } 
} 
+1

Хорошая идея! Печально, что вам приходится так обходить это. –

1

Это хороший вопрос. Поскольку ссылка говорит, что требуется TargetControlID, единственное, что я попробую, это динамическое создание элемента управления BalloonPopupExtender. Я бы, наверное, поставил PlaceHolder там, чтобы убедиться, что есть удобное место для его добавления.

Вам потребуется событие, которое вы хотите обработать для динамического создания Extender. Но вы упомянули, что хотите контролировать, когда показывать это.

1

Я считаю, что это ошибка в AjaxControlToolkit. Проверьте этот файл: BalloonPopupExtenderBehavior.pre.js

Как вы можете видеть, в функции initialize, click обработчик событий добавлен в целевой контроль только если _displayOnClick значение поля true. Довольно странно, поскольку вы указали false для свойства сервера, которое должно быть сохранено в этом поле. Но если вы проверите функцию set_displayOnClick ниже в этом расширителе, вы найдете это значение, отправленное с сервера, сохраненного в поле this.displayOnClick (без знака подчеркивания). А так как поле _displayOnClick имеет значение по умолчанию true (check constructor), его невозможно отключить показ шара при щелчке.

Вы можете скачать источники инструментальных средств из Codeplex, исправить этот файл, перестроить решение и использовать специальную библиотеку инструментальных средств.

Для быстрого грязного исправить вы можете добавить в нижней части страницы этого заполнитель Биого скрипт внутри:

<asp:PlaceHolder runat="server" ID="FixScripotPlaceholder"> 
    <script type="text/javascript"> 
     function disableBaloon() { 
      var extender = $find("BaloonExtender"); 
      $removeHandler(extender.get_element(), "click", extender._clickHandler); 
     } 

     setTimeout(disableBaloon, 500); 
    </script> 
</asp:PlaceHolder> 

Установка Visible="false" для этого заполнителя вы включите Baloon на клике от кода сервера. Кроме того, из Javascript вы можете использовать этот скрипт для того, чтобы Baloon по щелчку:

function enableBaloon(){ 
    var extender = $find("Extender's BehaviorID"); 
    $addHandler(extender.get_element(), "click", extender._clickHandler); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^