Запустите Javascript после загрузки страницы - PullRequest
4 голосов
/ 19 июля 2011

Я понимаю, что есть МНОГИЕ сообщения, но я попробовал все до единого, и ни один из них не работает!

У меня есть страницы aspx и aspx.cs, запускаемые с использованием visual studio 2010.

на моей странице aspx У меня есть таблица

<table id="viewPendingTable" runat="server"></table>

На странице aspx.cs таблица загружается данными.Это отлично работает, нет проблем.Как только страница загружена, таблица содержит динамически добавленные данные, которые мне требуются.

Я использую jquery dataTables для стилизации моей таблицы, используя стандартный

$(document).ready(function () {
    $('#viewPendingTable').dataTable({
        "bJQueryUI": true,
    });
});

Когда я создаю тестовую таблицу сфиктивная информация прямо в html, таблица данных отображается корректно по мере необходимости.Но когда я применяю скрипт jquery к динамической таблице.Ничего не произошло.Динамические данные отображаются по мере необходимости, но таблицы данных (функции поиска, стиль и т. Д.) Отсутствуют.

Теперь я подозреваю, что это потому, что сценарии запускаются до того, как таблица заполнена данными.

Именно здесь я начал свою миссию, чтобы заставить jquery / javascript запускаться ПОСЛЕ запуска aspx.cs и заполнения таблицы.

Но я потерпел неудачу ... Так что, как тест, ядумал, что я запустил предупреждение ('YAAY');со стороны c #, используя зарегистрированные скрипты запуска.но безрезультатно, что это не сработает.

Так может кто-нибудь, ПОЖАЛУЙСТА, скажет мне, почему это не работает.

Я пробовал несколько разных способов запуска скриптов!

Мой aspx:

<table id="viewPendingTable" runat="server"></table>

<script type="text/javascript" language="javascript" id="ShowTable">
<!--
    loadTable();
    function loadTable() {
        $(document).ready(function () {
            $('#viewPendingTable').dataTable({
                "bJQueryUI": true,
                "sPaginationType": "full_numbers"
            });
        });
        alert('ALEX');
        document.getElementById("table_id").width = "100%";
    }
//-->
</script>

И мой aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
    loadMyTable();
    ClientScriptManager a = null;
    a.RegisterStartupScript(GetType(), "anotherkey", "alert('ASDFASDFASDF');", true);
    a.RegisterStartupScript(GetType(), "anfgsdgsderkey", "alert('MOTHER');", false);
    a.RegisterStartupScript(this.GetType(), "AKey", "loadTable();", true);

    ClientScript.RegisterStartupScript(GetType(), "MyScript", "<script language=javascript>" + "alert('Hello ASP.NET'); }</script>");

    ScriptManager.RegisterStartupScript(this.Page, GetType(), "script", "alert('Success!');", true);

    Page.ClientScript.RegisterClientScriptBlock(GetType(), "script", "alert('AAA');", true);

    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script",
        "alert('a');" +
        "$(document).ready(function (){" +
            "$('#viewPendingTable').dataTable({" +
                "\"bJQueryUI\": true" +
                "\"sPaginationType\": \"full_numbers\"" +
            "});" +
        "}); alert('b'); document.getElementById('viewPendingTable').width = 100%", true);

}

Я попробовал больше методов для запуска javascript после загрузки страницы, но они были потеряны в гневетак плохо.

Кто-нибудь, ПОЖАЛУЙСТА, ПОМОГИТЕ!

Почему не запускаются мои простые предупреждения javascript?

Даже если я заставлю их работать ... будет ли таблица данныхбыть правильно стилизованным, выполняя jquery после загрузки страницы ???

Спасибо, пожалуйста, за ваше время

Alex

ps Нет комментариев к asp: gridView или asp: DataTable как таковыеНе удалось EPICALLY, и я разместил вопрос о нем несколько дней назад, и никто не ответил.Если вы хотите посмотреть ЩЕЛКНИТЕ ЗДЕСЬ

Ответы [ 3 ]

4 голосов
/ 19 июля 2011

Измените эту строку кода и попробуйте

"$('# " +   viewPendingTable.ClientID + "').dataTable({" +

в своем сценарии document.read, который вы написали

Это потому, что вы можете получить точный идентификатор элемента управления таблицей при получении страницысделать в браузере

Редактировать Использовать

RegisterStartupScript, поскольку он генерирует ваш JavaScript в конце страницы непосредственно перед тегом </form> (перед <form> тег заканчивается).

2 голосов
/ 27 июля 2011

Прежде всего, код на стороне клиента ВСЕГДА запускается после выполнения кода на стороне сервера.Хотя код на стороне клиента может быть запущен до того, как HTML будет отображаться в вашем браузере.Так что это не имеет к этому никакого отношения.

Если вы проверите сгенерированный HTML, вы увидите, что asp.net сгенерирует идентификатор элемента, к которому вы применяете атрибут runat.Чтобы решить эту проблему, добавьте класс в таблицу и измените селектор js на $ (". Classname").

Дополнительный совет: используйте отладчик, такой как firebug, который позволяет отлаживать код js, что облегчает решение таких проблем:)

2 голосов
/ 19 июля 2011

Наиболее вероятная проблема, с которой вы сталкиваетесь, заключается в том, что id="viewPendingTable" не существует на вашей странице.

При добавлении атрибута runat="server" в вашу таблицу идентификатор будет изменен, чтобы ASP.NET может связываться с ним при обратной передаче.

Вам нужно будет использовать свойство ClientID таблицы в вашем jQuery:

viewPendingTable.ClientID
...