ASP.NET GridView需要显示鼠标移动

时间:2010-03-02 14:40:20

标签: gridview asp.net-ajax modalpopupextender

我有一个ModalPopupExtender,它包含一个UserControl,它基本上由一个GridView和一个HiddenField组成,两者都在UpdatePanel上。 HiddenField存储所选行的编号。这样我在选择行时就避免了回发。
ModalPopupExtender还包含一些按钮,当没有选择任何GridView行时,我想要禁用这些按钮。因此,在pageLoad()方法中执行javascript:

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时,按钮被禁用。只要我选择任何行,按钮就会启用。这很棒。但问题是带有GridView的UserControl消失了!更重要的是,当我调整浏览器窗口大小时,它会再次出现 请注意,由于某些原因(不要问为什么),在项目中使用了Ajax Control Toolkit库的CTP版本。这可能是问题吗?
我很感激任何建议。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。显然,浏览器由于某种原因不重绘网格。因此我强迫它这样做。因此我修改了脚本,添加了以下内容:

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


这完成了这项工作。