隐藏空领域

时间:2011-07-01 14:14:17

标签: asp.net

我有一个数据中继器正在读取几个不同的字段。但是,某些信息被删除。在这种情况下,我想隐藏这些字段。

我不确定如何最好地解决这个问题。我尝试了以下方法:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:db %>" 
                SelectCommand="SELECT GrName, GrRoom
                                FROM [Group] WHERE GrName LIKE 'A%' ORDER BY GrName  && * IS NOT NULL">
            </asp:SqlDataSource>

            <!-- output to page -->
            <div data-role="collapsible-set">
                <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
                    <ItemTemplate>
            <div data-role="collapsible" data-collapsed="true">
                                <p>Room: <%# Eval("GrRoom")%></p>
                        </div>
                    </ItemTemplate>
                </asp:Repeater>

或者,我是否会在头脑中做这样的事情?

    <script type="text/vbscript">
If (GrRoom = NULL) Then
  display: none;
End If
</script>

我不确定我现在正在抓住这个概念。基本上,我希望以下功能运行:

“如果GrRoom为空,请不要显示”

对此有何想法?我很感激你的见解。我对ASP和.NET比较陌生,所以我还在学习很多东西。

感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:2)

<ItemTemplate>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server" 
    Visible='<%#  Not [String].IsNullOrEmpty(If(TypeOf Eval("GrRoom") Is DbNull, [String].Empty, DirectCast(Eval("GrRoom"), String))) %>'>
        <div data-role="collapsible" data-collapsed="true">
            <p>
                Room:
                <%# Eval("GrRoom")%></p>
        </div>
    </asp:PlaceHolder>
</ItemTemplate>


修改
我一开始没有测试它,现在我已经正确测试了这段代码。我现在也在检查空字符串。请试一试。
修改2
我正在使用C#语法,抱歉,现在用VB编辑
修改3
我添加了DbNull检查

答案 1 :(得分:1)

如果您的目标不是在该字段为空的情况下检索所有数据,那么您的SQL语法很接近,但需要进行调整:

SELECT GrName, GrRoom
FROM [Group] 
WHERE GrName LIKE 'A%' 
AND IsNull(GrRoom, '') <> ''
ORDER BY GrName  

“* is not null”无效 - IS NOT NULL必须引用单个值,*引用结果集中使用的收集表中的所有列。

&安培;&安培;也不是有效的WHERE结构 - 你必须使用“AND”和“OR”而不是&amp;&amp;和||

您的WHERE条件必须在 ORDER BY子句

之前发生

最后 - 像'A%'会自动过滤掉空值,因为null不能像某个值那样。

因此,如果您使用sql,因为我已经编写了它,这将确保始终填充GrName,因此在ASP方面,不需要显示/隐藏控件的逻辑。

当然也有理由显示/隐藏控件 - 但是如果你可以从发送到服务器的数据中消除不需要的行,那么整体流量就会减少,“尽可能少的可能”总是一个目标在数据传输方面。