0

以下の aspx コードのこの ListView は、別の ListView にネストされています。以下のコード ビハインドは、ネストされたものをラップする ListView 用です。繰り返しのたびに、ラッパー ListView が入れ子になった ListView のデータソースにプロパティ "Comments" を渡すようにします。イベント "ItemDataBound" (このイベントはラッパー ListView 用です) を使用してコード ビハインドでこれを実行しようとしましたが、コードを実行すると、次の例外が発生します: DataBinding: 'System.Collections.Generic.HashSet`1[ [BlogProfile.Data.Comment, BlogProfile.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' には、'Author' という名前のプロパティが含まれていません。私が望むのは、ラッパー ListView がネストされた ListView に異なるデータソースを渡すたびに、このネストされた ListView が aspx コードで書いたように「Eval(...)」でこのデータソースを取得することだけです。ここが恋しい。ここで正しいイベントを使用していないことが問題なのではないでしょうか?

aspx コード:

       <asp:ListView ID="CommentListView" runat="server" >
             <ItemTemplate>
                 <div class="postComments">
                     <span class="authorComment"><%# Eval("Author") %></span>
                       :
                      <span class="commentContent"><%# Eval("Message") %></span>
                 </div>
              </ItemTemplate>
       </asp:ListView>

コードビハインド:

   protected void PostsListView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        BlogProfileEntities blogProfile = new BlogProfileEntities();
        var listview = e.Item.FindControl("CommentListView") as ListView;
        var hiddenfield = e.Item.FindControl("CurrentPostIDHiddenField") as HiddenField;
        int id = int.Parse(hiddenfield.Value);
        listview.DataSource = (from p in blogProfile.Posts
                               where p.PostID == id
                               select p.Comments).ToList();
        listview.DataBind();
    }
4

1 に答える 1

0

この問題は、エンティティ フレームワークに基づいています。これは、ADO.NET エンティティ FW コンポーネントをシステムに追加したときに発生しました。コンポーネントを再度読み込んでください。エンティティFWに追加されたテーブル列名も確認してください

于 2013-02-27T09:05:05.953 に答える