显示/隐藏基于Null / Not Null ASP.NET的数据库字段

时间:2011-10-17 16:19:36

标签: javascript asp.net

我试图隐藏数据字段,如果它是通过ASP.NET为null。 我有以下设置:

<script runat="server" type="text/vb">
// target the id called test
var test = document.getElementById("test");

// if test is not empty, show
// else hide test
if (test.value != null){
    document.getElementById("test").style.visibility = visible;
}else{
    document.getElementById("test").style.visibility = hidden;
}

<p><asp:Label runat="server" id="test"><%# Eval("DBField")%></asp:Label></p>

我离开这里了吗?无论我尝试什么,我都会收到错误。我不认为它应该如此复杂......任何想法/建议都会受到高度赞赏。

先谢谢你,

5 个答案:

答案 0 :(得分:1)

不知道你的错误是什么,很难给你一个答案。跳出来的一件事是你没有使用asp.net控件的ClientId。尝试更改此内容:

var test = document.getElementById("test");

到此:

var test = document.getElementById("<%=test.ClientID%>");

为asp.net控件分配ID时,这不是呈现的ID。请阅读this article以获取更多信息。

答案 1 :(得分:1)

这里有一些可能的问题:

由于您使用的是服务器控件,因此ASP.NET运行时可能会更改其ID,具体取决于其父级。如果您在页面上查看来源,则可能会显示“ctl00_main_test”之类的ID或类似内容。为了得到这个,你必须做以下事情:

var test = document.getElementById("<%= test.ClientID %>");

if (test.text != null){
    test.style.visibility = 'visible';
}else{
    test.style..visibility = 'hidden';
}

由于“visibility”可以映射到CSS样式,因此您可能必须使用“visible”和“hidden”周围的引号

最后, getElementByID 应该适用于所有现代浏览器,但旧版浏览器可能会有不稳定的实现。我建议您查看 jquery 以简化此代码:

if ( $('#<%=test.ClientID>').text() != '' && $('#<%=test.ClientID%>').text() != null){
    $('#<%=test.ClientID%>').show();
}else{
    $('#<%=test.ClientID%>').hide();
}

答案 2 :(得分:1)

您需要在JavaScript中测试空字符串,如下所示:

var test = document.getElementById("<%=test.ClientID%>");
if (test){
    test.style.visibility = (test.value == "" ? "hidden" : "visible");
}

修改

我刚注意到你正在使用数据绑定语法,这让我觉得这个Label在网格内部或其他东西。您可以尝试这样的事情:

<asp:Label ID="test" runat="server" Visible='<%#(String.IsNullOrEmpty(Eval("DBField")) == false)%>'><%#Eval("DBField")</asp:Label>

答案 3 :(得分:1)

我可以通过以下代码隐藏数据:

<asp:PlaceHolder ID="PlaceHolder" runat="server" Visible='<%# IIf((Eval("test")).ToString().Length > 0, "true", "false") %>'>
     <h3>test</h3>
     <asp:Label ID="test" runat="server" Text='<%# Bind("test") %>'></asp:Label>
</asp:PlaceHolder>

答案 4 :(得分:0)

Span代码没有值:

if ($('#<%=test.ClientID%>').html() != "") //jQuery

if (document.getElementById("<%=test.ClientID%>").innerText != "")