使用Javascript使用户控件可见

时间:2010-04-22 17:42:10

标签: javascript vb.net

我只想在按钮点击时显示用户控件。我在下面的代码中得到对象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

提前致谢。

1 个答案:

答案 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属性。

相关问题