Проверка события нажатия кнопки с использованием JS изнутри ascx, вложенного в панель обновления - PullRequest
0 голосов
/ 12 августа 2009

У меня есть кнопка внутри ascx на панели обновления внутри страницы содержимого aspx . Когда кнопка нажата, я хочу, чтобы она запустила функцию JS, которая заставляет показать панель. Вот мой код.

    <pre>


    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ABC.ascx.cs" Inherits="App.ABC" %>
    <script type= "text/javascript" language="javascript">
    var val1=0;
    var val2=0;


    function ShowPanel(val2)
    {
        if(val2 != 0)
        {   
            switch(val2)
            {
            case 1 : 
                document.getElementById('<%=pnl1.ClientID%>').style.visibility = 'visible';
            break;           
            }
        }
        return false;
    }
    </script>


    <asp:LinkButton ID="lbl1" runat="server" OnClick="return ShowPanel(1);">count</asp:LinkButton>

Я не судюсь, как это сделать. Пожалуйста, помогите

Обновление № 1 - ABC.ascx находится в панели обновлений на странице aspx XYZ.aspx

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ABC.ascx.cs" Inherits="App.ABC" %>
    <script type= "text/javascript" language="javascript">
    var val1=0;
    var val2=0;

    function ShowPanel(val2) {
            if (val2 != 0) {
                switch (val2) {
                    case 1:
                        document.getElementById("<%= this.pnl1.ClientID%>").style.display = "none";
                        break;
                }
            }
            return false;
        }
    </script>
    <div>

    <div style="text-align:center">

    </div>

    <table style="width:100%; text-align:center; border-color:#99CCFF" border="3">
      <tr style="text-align:left">
      <td><asp:LinkButton ID="lbl1" runat="server" OnClientClick="return ShowPanel(1);">count</asp:LinkButton>
      </td>
      <td style="text-align:right"><asp:Button ID="btnHide1" runat="server" Text="hide" 
              Height="18px" Width="32px"/>
      </td>
      </tr>
      <tr>
      <td colspan="2"><asp:Panel ID="pnl1" runat="server" Visible="false"> </asp:Panel>
        </td>
      </tr>
    </table>

    </div>

Ответы [ 3 ]

0 голосов
/ 12 августа 2009

В вашем примере вы используете LinkButton.OnClick, который является событием на стороне сервера, поэтому он не запускает клиентский JavaScript. Если вы измените OnClick на OnClientClick, это должно заставить ASP.NET выплевывать обработчик щелчков на стороне клиента для LinkButton (который, вероятно, будет отображаться как атрибут onclick = "return ShowPanel (1);" в теге привязки).

Также я заметил, что в вашей функции ShowPanel () вы используете pnl1.ClientID. Из вашего фрагмента кода я не могу определить, находится ли Panel на странице хоста (ASPX) или в пользовательском элементе управления (ASCX), но если он не находится в пользовательском элементе управления, вам потребуется установить какую-то ссылку на него ( т.е. DirectCast (Me.Page, MyHostPageWithPanel) .pnl1). Или вы можете решить, что на самом деле это не должен быть серверный элемент управления, и тогда вы можете просто жестко закодировать div с идентификатором, который легко получить с помощью JavaScript.

0 голосов
/ 08 октября 2009

сделал это легко, используя это

ScriptManager.RegisterOnSubmitStatement (this, this.GetType (), "", "showwait ();");

ScriptManager.RegisterClientScriptBlock (this, this.GetType (), "", "stopwait ();", true);

0 голосов
/ 12 августа 2009
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>

<script type= "text/javascript" language="javascript">
    var val1 = 0;
    var val2 = 0;


    function ShowPanel(val2) {
        if (val2 != 0) {
            switch (val2) {
                case 1:
                    document.getElementById("<%= this.pnl1.ClientID%>").style.display = "none";
                    break;
            }
        }
        return false;
    }
    </script>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Panel runat="server" ID="pnl1"><div>pepe</div></asp:Panel>
    <asp:LinkButton ID="lbl1" runat="server" OnClientClick="return ShowPanel(1);">count</asp:LinkButton>
    </div>
    </form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...