我有一个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版本。这可能是问题吗?
我很感激任何建议。
答案 0 :(得分:0)
我找到了解决方案。显然,浏览器由于某种原因不重绘网格。因此我强迫它这样做。因此我修改了脚本,添加了以下内容:
var grid = $get('<%= SXGVSavedTemplates.ClientID %>'+'_gv');
if(grid != null)
{
grid.className = grid.className;
}
这完成了这项工作。