0

ASP.NETPanelコントロールの表示属性に問題があります。データベーステーブルを呼び出し、データグリッドで結果を返すページがあります。

要件

戻り値の一部が含まれている場合は、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='<%# 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

評価の結果を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;
   }
}

これは私の頭のてっぺんから外れています。構文エラーが 1 つまたは 2 つある可能性があります。しかし、あなたはその考えを理解します。

于 2008-12-18T19:57:35.293 に答える
0

うーん...

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

動作するはずです。どのようなエラーが発生していますか?

于 2008-12-18T20:14:31.373 に答える