Управление доступом к веб-формам ASP.NET на странице из JavaScript - PullRequest
0 голосов
/ 01 ноября 2019

Мне нужно изменить старый проект ASP.NET Web Forms. У меня есть страница с таблицей, на которую мне нужно загрузить данные из кода. Когда страница загружается, я хочу инициализировать ее для таблиц данных из JavaScript. Проблема в том, что когда JavaScript работает, таблица еще не загружена на страницу, потому что это runat = server. Я попытался поместить блок скрипта в div с сервером runat =, полагая, что они могут появиться одновременно. Не повезло. Я знаю, что скрипт работает, потому что, если я удаляю runat = server из таблицы, они загружаются одновременно, и он инициализируется как таблица данных. Я также пробовал RegisterStartupScript и RegisterScriptBlock, ни один из них не работает. Если я не могу заставить это работать, я в порядке с загрузкой данных другим способом. Единственная причина, по которой мне понадобилась таблица в качестве сервера runat, - это загрузка данных из кода, стоящего за

  <script type="text/javascript">
     st();
     function st() {
            console.log('load datatable');
            $('[name = "employeeChangeHistory"]').DataTable();

            }

   </script>
     <table runat="server" name="employeeChangeHistory"  
       ..... 
    </table>

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Попробуйте поставить defer в сценарии. w3schools.com/tags/att_script_defer.asp.

Также / или убедитесь, что ваш скрипт находится в конце страницы. В вашем вопросе это перед HTML. Скрипт полностью читается браузером, прежде чем двигаться дальше, поэтому, если он первый, скрипт ищет нужные ему html-теги, но не найдет их, потому что их еще нет на странице. Помещение скрипта в конец помогает (но не гарантирует), что скрипт может найти любой html, который ищет. (Defer помогает гарантировать, что страница полностью загружена перед сценарием.)

1 голос
/ 01 ноября 2019

Редактировать:

У вас не может быть тега table html как элемента управления ASP.NET, так как он не один.

Вы должны смотреть на использование asp: Таблица вместо:

<asp:Table runat="server" ID="employeeChangeHistory">

и вызов вашего javascript с использованием

$("#<%= employeeChangeHistory.ClientID %>").DataTable();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...