ModalPopup, UpdatePanel, Javascript «Ожидается объект» Ошибка с Inte rnet Explorer - PullRequest
1 голос
/ 04 апреля 2020

Новая информация! Проблема, которую я опишу ниже, возникает только в Microsoft Inte rnet Explorer. Все остальные, которые я тестировал, вели себя как следует. Даже Microsoft Edge справился с этим просто отлично. Многие люди используют IE, поэтому, возможно, кто-то знает способ решения следующей проблемы:

Страница в моем веб-приложении asp. net имеет модальное всплывающее окно, которое содержит список, который должны быть заселены на лету. Страница содержит древовидный элемент управления; щелчок правой кнопкой мыши по узлу дерева вызывает контекстное меню; и если пользователь нажимает «Добавить предварительную задачу», появляется всплывающая форма со списком элементов, которые различаются в зависимости от того, какой узел был нажат.

Список содержится в UpdatePanel, который был вставлен, чтобы список можно было заполнить без повторной публикации всей страницы. Я разработал это всплывающее окно, проверил его, и, похоже, оно работает правильно. Я похлопал себя по спине за хорошо выполненную работу, когда мне довелось нажать клавишу на клавиатуре компьютера. Приложение упал со следующим сообщением об ошибке:

"необработанное исключение в строке 1010, столбец 1 в http://localhost: 55109 / PPM / ScriptResource.axd д = 8GNeJYrV145FFZwe3zZTQTMdSqo5ZWiNHMcMCdX41b_dp65omt53usfcChKlDkhIbPdehfLSEKVkXbwQruOiDLDfxhVjDQZOQZDVfHxfkhrBY3rHZVHxg2I6VQGIFSKL2AhGUprc1gW7X0t1_Q79OAckMdH-JliDUkID4lzcsT8Bfkxn0 & т = 1e478eba

0x800a138f - JavaScript ошибка времени выполнения: ожидаемый объект "

Это поведение соответствует. Всплывающее окно не потерпит нажатия клавиш.

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

Вот соответствующая разметка:

     <a href="#" style="display:none;" onclick="javascript:return false" id="hidlinkAddPretask" 
runat="server">dummy</a>

<cc1:ModalPopupExtender ID="mpePretask" runat="server"  PopupControlID="pnlPretask" TargetControlID="hidlinkAddPretask"
     CancelControlID="btnCancelPretask" ></cc1:ModalPopupExtender>

<asp:Panel ID="pnlPretask" runat="server" CssClass="popupPanel" Width="40%">

    <asp:UpdatePanel ID="updPretask" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
       <ContentTemplate>

    <!-- Panel within pnlPretask contains list of selected. -->
     <asp:panel runat="server" ID="pnlPretaskList" Visible="false">
        <asp:BulletedList ID="blPretasks" runat="server">
        </asp:BulletedList>
    </asp:panel>


            <asp:HiddenField runat="server" ID="hidPostTaskID" Visible="true" />

            Before <b>"<asp:Label ID="lblAddPretask" runat="server"></asp:Label>"</b> can be completed, I must:
            <br /><br />

           <asp:ListBox ID="lboxPretask" runat="server" Width="80%" Height="200px"
                 ToolTip="Select one or more tasks that must be completed before..." AutoPostBack="false"
                 SelectionMode="Multiple">
          </asp:ListBox>

        </ContentTemplate>
    </asp:UpdatePanel>

   <br /><br />
    <asp:UpdateProgress ID="UpdateProgress4" runat="server" DisplayAfter="0">
        <ProgressTemplate>
            <img src="images/progress.gif" alt="" />&nbsp;Updating...</ProgressTemplate>
    </asp:UpdateProgress>

    <asp:Label runat="server" ID="lblErrPretask" Font-Bold="True" ForeColor="Red" />
    <br />
    <asp:Button ID="btnAddAnotherPretask" runat="server" Text="Save and Add Another" />
    <asp:Button ID="btnSavePretask" runat="server" Text="Save" />
    <asp:Button ID="btnCancelPretask" runat="server" Text="Cancel"   />
</asp:Panel>

Всплывающее окно запускается с сервера с помощью этого кода VB:

        Dim ID As String = e.NodeClicked.Attributes("TaskID").ToString
        'Repopulate listbox
        PretaskSelectList(ID)
        updPretask.Update()
        mpePretask.Show()

И эта подпрограмма vb заполняет список:

Private Sub PretaskSelectList(ByVal TaskID As Integer)
    Dim strConn As String = ConfigurationManager.ConnectionStrings("PPMConnectionString").ConnectionString
    Dim cnn As SqlConnection = New SqlConnection(strConn)

    cnn.Open()

    'Get two result sets from uspPretaskPickList
    Dim sql As String = "execute dbo.uspPretaskPickList " & TaskID.ToString

    Dim cmd As SqlCommand = New SqlCommand(sql, cnn)

    'Result set #1 - Tasks from current Goal
    Dim rdr As SqlDataReader = cmd.ExecuteReader()
    Dim Itm As ListItem

    With lboxPretask
        .Enabled = True

        .Items.Clear()

        'Add a default item, #0
        Itm = New ListItem("ADD NEW TASK", "0")
        Itm.Attributes.Add("Style", "Font-Weight:Bold")
        .Items.Add(Itm)

        'Insert a separator if data reader has any records
        Dim separator As New ListItem("-------------------------", "")
        separator.Attributes.Add("disabled", "true")

        If rdr.HasRows Then
            .Items.Add(separator)
        End If

        'Add each member of 1st result set, using lboxPretask.Items.Add(New ListItem(TaskName, TaskID))
        Do While rdr.Read
            Itm = New ListItem(rdr("TaskName"), rdr("TaskID").ToString)
            'Each item should be Bold. 
            Itm.Attributes.Add("Style", "Font-Weight:Bold")
            .Items.Add(Itm)
        Loop

        'Add dividing line, Pretask.Items.Add("------------", "-1")
        separator.Attributes.Add("disabled", "true")
        .Items.Add(separator)

        'Results set #2 - Tasks from other or no goal
        rdr.NextResult()

        'Add each member of 2nd result set, using lboxPretask.Items.Add(New ListItem(TaskName, TaskID))
        Do While rdr.Read
            Itm = New ListItem(rdr("TaskName"), rdr("TaskID").ToString)
            .Items.Add(Itm)
        Loop

    End With

    rdr.Close()
    cnn.Close()

    rdr = Nothing
    cnn = Nothing

    lboxPretask.ClearSelection()

End Sub

Еще раз спасибо за любые идеи, которые вы можете предоставить.

1 Ответ

0 голосов
/ 06 апреля 2020

Похоже, что на ваш файл JS не ссылаются должным образом на вашей странице.

Вы можете решить проблему, сославшись на нее, как показано ниже.

<script type="text/javascript" src=<%# ResolveUrl("http://code.jquery.com/jquery-latest.min.js") %> ></script>

Ссылка:

0x800a138f - Ошибка времени выполнения Microsoft JScript: ожидаемый объект

...