我只想在按钮点击时显示用户控件。我在下面的代码中得到对象null典型错误。如何使用javascript使完整的用户控件可见或不可见?
Dim ucAddNewChekcing As SubscriberSetupPages_UserControls_CheckingAccount
ucAddNewChekcing = DirectCast(pnlTopLevel.Items().FindItemByValue("pnlAddChecking").FindControl("CheckingAcct1"), SubscriberSetupPages_UserControls_CheckingAccount)
Dim openWinScript As String = "SetVisibility('" & ucAddNewChekcing.ClientID & "');"
btnAddChecking.OnClientClick = openWinScript
提前致谢。
答案 0 :(得分:0)
有visible =“false”设置意味着您的控件根本不会被渲染,因此当您想要显示它时没有可用的元素。你可以通过几种方式解决这个问题:
让控件保持可见,然后呈现,并使用css样式隐藏它直到你需要它: style="display: none;"
代替visible="false"
。 德尔>
将visible
更改为true
并在某个包装元素上设置style="display: none;"
(请参阅下面的编辑)。
在您的SetVisibility
功能中,您可以
element.style.display = '';
删除none
值并显示元素。
编辑:确定在考虑了这个之后,我们不能将style="display: none;"
放在用户控件标记中,因为它不会映射到任何特定的html元素。相反,这需要在包装用户控件内容的元素上设置。
如果用户控件已经具有这样的元素,那么这将是设置显示样式的好地方。您可以向控件添加一个方法,该方法将返回该元素的ClientID,以便您可以在脚本中引用它。
否则,如果您的布局可以容忍它,您可以将控件置于asp:Panel
内并设置显示属性。
另一个选项是将控件包含在包含某些控件(如HiddenField
)的UpdatePanel中作为标志,该标志将指示控件是否可见。如果你走那条路,你SetVisibility
函数看起来像
// change value on flag control
hiddenControl.value = '1';
// trigger a partial postback
__doPostBack('UpdatePanel1', '');
然后在UpdatePanel_Load
函数中,您可以检查标记控件的值,并相应地在用户控件上设置Visible
属性。