Для отображения ASP.NET GridView необходимо движение мыши - PullRequest
0 голосов
/ 02 марта 2010

У меня есть ModalPopupExtender, содержащий UserControl, который в основном состоит из GridView и HiddenField, оба на UpdatePanel. HiddenField хранит номер выбранной строки. Таким образом, я избегаю обратных передач при выборе строк.
ModalPopupExtender содержит также некоторые кнопки, которые я хочу отключить, когда ни одна из строк GridView не выбрана. Поэтому следующий javascript выполняется в методе pageLoad ():

function trackSelection()
{
    var hf = $get('<%= SXGVSavedTemplates.ClientID %>'+ '_hfSelected');

        if(hf != null)
        {
            hf.onpropertychange = function()
            {
                var btnOk = $get('<%= btnLoadTemplateOK.ClientID %>');
                var btnDelete = $get('<%= btnLoadTemplateDelete.ClientID %>');
                var hfSelected = $get('<%= SXGVSavedTemplates.ClientID %>'+ '_hfSelected');

                var disabled = (hfSelected.value == "");
                if(btnOk != null)
                {
                    btnOk.disabled = disabled;
                }
                if(btnDelete != null)
                {
                    btnDelete.disabled = disabled;
                } 
            }
        }
}


Теперь это работает отлично. Когда отображается ModalPopup, кнопки отключены. Как только я выбираю любую из строк, кнопки становятся активными. Это замечательно. Но проблема в том, что UserControl с GridView исчезает! Более того, когда я изменяю размер окна браузера, оно снова появляется.
Обратите внимание, что по некоторым причинам (не спрашивайте почему) в проекте используется CTP-версия библиотеки Ajax Control Toolkit. Может ли это быть проблемой?
Буду признателен за любые предложения.

1 Ответ

0 голосов
/ 02 марта 2010

Я нашел решение.Видимо, браузер по какой-то причине не перерисовывает сетку.Таким образом, я заставил это сделать.Поэтому я изменил скрипт, добавив следующее:

var grid = $get('<%= SXGVSavedTemplates.ClientID %>'+'_gv');
if(grid != null)
{
    grid.className = grid.className;
}

Это сделало работу.

...