Доступ к данным строки gridview ПОСЛЕДОВАТЕЛЬНО из JavaScript - PullRequest
0 голосов
/ 04 октября 2019

У меня есть веб-страница asp.net, которая содержит сетку с привязанными к ней данными SQL с помощью свойства DataSourceID. Я хочу иметь возможность запускать JavaScript из различных пользовательских событий (например, нажатий кнопок и строк во втором просмотре таблицы) и использовать JavaScript для чтения данных gv1 и выполнения некоторых простых действий. Моя проблема в том, что некоторые из моих вызовов JavaScript видят данные в виде сетки, но много раз все, что я вижу в виде сетки, это заголовок (без строк данных!).

Например, если я помещаю вызовв JavaScript внутри Page_Load (), используя

ScriptManager.RegisterStartupScript(Me, Page.GetType, "Script", "jsPageLoadFirst();", True)

, тогда я всегда вижу данные gridview при начальной загрузке страницы, а также при некоторых обратных передачах. На других обратных передачах, однако, gridview был удален, и все, что я вижу, это заголовок gridview (строки не определены).

Аналогично, если я настрою вызов JavaScript в теле html как

<body id="mybody" onload="JavaScript:myJSsub();">

подпрограмма JavaScript никогда не видит данные вида сетки;только заголовок, но без строк. Я ДУМАЛ, что событие onload клиента произошло только после полной загрузки страницы (включая все привязки данных!), Но, очевидно, нет! Обратите внимание, что я всегда вижу данные gridview, отображаемые на веб-странице, даже перед тем, как нажимать кнопку для вызова JavaScript, поэтому для меня загадка, почему данные gridview иногда удаляются!

Я былпотянув мои волосы на несколько дней, пытаясь понять это. Может кто-нибудь сказать мне, что я делаю неправильно, и как я могу убедиться, что данные строки gridview всегда доступны для моих подпрограмм JavaScript, независимо от того, где (или как) я их запускаю?

Спасибо!

-tom

10/7 обновление: вот немного больше информации, а также возможная работа, которую я придумал сегодня, используя скрытое поле. Во-первых, я в основном обращаюсь к данным gridview в JavaScript, используя вызовы document.getElementById("gv1"). Итак, для начала, поскольку все данные gridview доступны для подпрограммы JavaScript, которую я запускаю из первого события PageLoad сервера, я попытался сохранить данные gridview как в глобальной переменной «gvar1», так и в скрытом поле на моей странице ». HF1" . Вот как выглядит мой JavaScript:

    function jsPageLoadFirst() {
        // Save gv1 to a global variable
        gvar1 = document.getElementById("gv1");

        // *** Also save gv1's html to a hidden field
        document.getElementById("hf1").value = document.getElementById("gv1").innerHTML;
    }

Теперь в подпрограмме JavaScript, которую я запускаю из события onload () тела, я проверяю значения всех трех. Я всегда нахожу, что 1) document.getElementById("gv1") показывает только заголовок gridview (но без строк), 2) gvar1 не определено и 3) hf1 выглядит хорошо - все данные строки присутствуют. Точно так же при запуске javascript с серверных загрузок Postback иногда document.getElementById("gv1") показывает все данные gridview, но иногда он показывает только заголовок gridview, но не данные строки. Может кто-нибудь объяснить мне, почему document.getElementById("gv1") не всегда показывает данные строки? Я думаю, что если бы я понял это, я мог бы увидеть свой путь, чтобы заставить остальную часть моего кода работать. Спасибо !!!

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