0

Panel我在使用 ASP.NET控件的可见属性时遇到问题。我有一个调用数据库表并在数据网格中返回结果的页面。

要求

如果某些返回值是null我需要隐藏它旁边的图像。

我正在使用 aPanel来确定是隐藏还是显示图像,但在声明中遇到问题:

visible='<%# Eval("addr1") <> DBNull.Value %>'

我也试过这些:

visible='<%# Eval("addr1") <> DBNull.Value %>'
visible='<%# IIf(Eval("addr1") Is DbNull.Value, "False","True") %>'

代码如下:

<asp:TemplateField >
     <ItemTemplate>
          <%# Eval("Name")%>
               <p>
                   <asp:Panel runat="server" ID="Panel1" 
                        visible='<%# Eval("addr1") <> DBNull.Value %>'>
               <asp:Image Id="imgHouse" runat="server" 
                        AlternateText="Address" SkinId="imgHouse"/>                
               </asp:Panel>
           <%# Eval("addr1") %><p>                                             
</ItemTemplate>
</asp:TemplateField>

我究竟做错了什么?

编辑

如果我使用visible='<%# IIf(Eval("addr1") Is DbNull.Value, "False","True") %>'

我收到以下错误:

Compiler Error Message: CS1026: ) expected
4

4 回答 4

1

尝试:

<%# String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem,"addr1").ToString()) #>

于 2008-12-18T19:58:34.073 回答
0

嗯……

visible='<%# IIf(Eval("addr1") Is DbNull.Value, "False","True") %>'

应该管用。你遇到了什么错误?

于 2008-12-18T20:14:31.373 回答
0

尝试将 eval 的结果与空白而不是 null 进行比较。

于 2008-12-18T19:51:00.670 回答
0

使用服务器端代码可能更容易完成。

处理网格中的 RowDataBound 事件(假设您使用的是 gridview,对于 DataGrid,它是 ItemDataBound),然后执行以下操作:

public void grid1_RowDataBound(object sender, GridViewRowDataBoundEventArgs e)
{
   if(e.Row.RowType == RowType.DataRow)
   {
        object itemFromDb = e.Row.DataItem;  //you'll need to cast this to your type
        Panel p = (Panel)e.Row.FindControl("myPanel");
        if(itemFromDb.SomeItem == null)
           p.Visible = false;
   }
}

这不是我的想法,我可能有语法错误或 2。但你明白了。

于 2008-12-18T19:57:35.293 回答