2011-01-04 64 views
8

ListViewを、正常に動作しているオブジェクトのコレクションにバインドします。残念なことに、コレクションが空の場合は、EmptyItemTemplate要素のテキストが期待通りに表示されません。ASP.NetリストビューEmptyItemTemplateが表示されない

マークアップコードと結合することの背後にある

 <asp:ListView ID="lvBuildingContactsGrid" runat="server" 
      onitemcommand="lvBuildingContactsGrid_ItemCommand" > 
      <LayoutTemplate> 
        <!-- some more html markup --> 
      <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
        <!-- some more html markup --> 
      </LayoutTemplate> 
      <ItemTemplate> 
        <!-- some item makup -->   
      </ItemTemplate> 
      <EmptyItemTemplate> 
        <p> empty text that isn't displaying </p>     
      </EmptyItemTemplate> 
     </asp:ListView> 

コードでコレクションがゼロの数を返すと、その後EmptyItemTemplateのテキストは表示されません

 ContactRoleCollection contactRoles = new ContactRoleCollection(); 
     contactRoles.ContactRoleSearchByBuildingID(int params); 

     lvListView.DataSource = contactRoles; 
     lvListView.DataBind(); 

です。私はページソースを見ており、(隠されているのではなく)レンダリングされていません。 DataSourceオブジェクトをヌルだけで置き換えました。つまり、

lvListView.DataSource = null 

これをテストしてもまだ動作しません。テキストは再びレンダリングされません。

私はこの問題を、私が取り組んでいる(そしてあきらめてやり遂げた)他のページに載せていたので、間違っていることは明らかです。

任意の入力を使用すると、データレンダリングされるEmptyDataTemplateと、現在のページの最後のグループ、に表示するそれ以上のデータ項目が存在しないときにレンダリングされEmptyItemTemplateを、混乱しているように見えます

答えて

23

を高く評価しましたsourceにはレコードが含まれていません。

あなたの質問から、あなたは後者が必要なようです。

<EmptyDataTemplate> 
    <p>Empty text that will be displayed.</p> 
</EmptyDataTemplate> 
+3

データソースとしてnullを割り当てると、レンダリングされないことがあります。 (.DataBind()を忘れないでください)上記の4行のコードを使用してください。 – citronas

+0

それはまさにそれでした。どうもありがとう –

関連する問題