【问题标题】:Can't set Visible attribute in ASP.NET Panels无法在 ASP.NET 面板中设置可见属性
【发布时间】:2010-09-27 14:20:31
【问题描述】:

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

要求

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

我正在使用Panel 来确定是隐藏还是显示图像,但声明有问题:

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='&lt;%# IIf(Eval("addr1") Is DbNull.Value, "False","True") %&gt;'

我收到以下错误:

Compiler Error Message: CS1026: ) expected

【问题讨论】:

标签: asp.net datagrid


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    处理网格中的 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。但你明白了。

    【讨论】:

      【解决方案3】:

      尝试:

      &lt;%# String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem,"addr1").ToString()) #&gt;

      【讨论】:

        【解决方案4】:

        嗯……

        visible=''

        应该可以。你遇到了什么错误?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多