Вызов функции Javascript ascx со страницы .aspx

У меня есть следующая страница .ascx(пользовательский контроль):

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="MultiSelectDDL.ascx.cs" Inherits="MultiSelectDDL" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
 <link href="Styles/style.css" rel="stylesheet" type="text/css" />
<script type = "text/javascript">

    function CheckItem(checkBoxList) {
        debugger;
        var options = checkBoxList.getElementsByTagName('input');
        var arrayOfCheckBoxLabels = checkBoxList.getElementsByTagName("label");
        var s = "";

        for (i = 0; i < options.length; i++) {
            var opt = options[i];
            if (opt.checked) {
                s = s + ", " + arrayOfCheckBoxLabels[i].innerHTML;
            }
        }
        if (s.length > 0) {
            s = s.substring(2, s.length);
        }
        var TxtBox = document.getElementById("<%=txtCombo.ClientID%>");
    TxtBox.value = s;
    document.getElementById('<%=hidVal.ClientID %>').value = s;
}
</script>


<asp:TextBox ID="txtCombo" runat="server" ReadOnly="true" Width="138px" Font-Size="X-Small" CssClass="txtbox"></asp:TextBox>
<cc1:PopupControlExtender ID="PopupControlExtender111" runat="server" 
    TargetControlID="txtCombo" PopupControlID="Panel111" Position="Bottom" >
</cc1:PopupControlExtender>

<input type="hidden" name="hidVal" id="hidVal" runat="server" />

<asp:Panel ID="Panel111" runat="server" ScrollBars="Vertical" Width="142px" Height="75" BackColor="White" BorderColor="Gray" BorderWidth="1">

    <asp:CheckBoxList ID="chkList" 
        runat="server" 
        Height="75" onclick="CheckItem(this)">                                                                                                                                                                        
    </asp:CheckBoxList>

</asp:Panel>

И еще одна нормальная страница .aspx, на которой я разместил вышеупомянутый пользовательский элемент управления.

Что мне нужно сделать, так это то, что из функции, написанной на .aspx.cs, я хочу вызвать Javascript, написанный на странице .ascx.

Я пытался:

 Page.ClientScript.RegisterStartupScript(this.GetType(),"MyFunction","CheckItem('"+ MultiSelectDDL1.ClientID +"');",true);

Но это не работает. Пожалуйста, помогите.


person Jackson Lopes    schedule 08.12.2014    source источник
comment
Это должно сработать, поэтому вам нужно предоставить больше информации. В консоли есть сообщения об ошибках? Вы пытались выполнить код, чтобы увидеть, выполняется ли он. Вам нужно дать больше информации, что это не работает.   -  person anothershrubery    schedule 08.12.2014
comment
Я установил отладчик JS, но он никогда не достигает этого. Страница .aspx содержит панель обновления, как только я ее удаляю, javascript работает. Почему это так?   -  person Jackson Lopes    schedule 08.12.2014


Ответы (2)


Я думаю, проблема в том, что вы передаете жало вместо элемента DOM, вы должны изменить сценарий запуска на приведенный ниже.

Page.ClientScript.RegisterStartupScript(this.GetType(),"MyFunction","CheckItem(document.getElementById('"+ MultiSelectDDL1.ClientID +"'));",true);
person Onur Topal    schedule 08.12.2014

вам нужно передать объект, вставленный в идентификатор клиента

 Page.ClientScript.RegisterStartupScript(this.GetType(),"MyFunction","CheckItem(this);",true);
person Anant Dabhi    schedule 08.12.2014
comment
Что бы вы ни говорили, это правда, но настоящая проблема заключается в том, что пока на моей странице есть эта панель обновлений, я не могу вызывать какой-либо JS из кода, как только я его удаляю, все работает нормально, за исключением некоторых проблем со стилем. Почему это - person Jackson Lopes; 08.12.2014