2017-12-28 113 views
0

特定のニュース記事にユーザーが行ったコメントをすべて表示するListViewがあります。DataBinder.Evalを使用すると、ListViewDataItemに「CommentId」という名前のプロパティが含まれていません

各コメントにコメントと著者IDが必要です。そのコメントの横に削除ボタンが表示されます(それぞれのユーザーが作成した場合)。

問題はラインDataBinder.Eval(dataItem, "CommentId")

System.Web.UI.WebControls.ListViewDataItem」の名前のプロパティが含まれていません 『CommentId』は次のエラーをスローしていることです。

また、CommentIdからComments.CommentIdに変更しようとしましたが、運がありません。私が間違っているのは何

? 何か助けていただければ幸いです。

ありがとうございます! News.aspx

News.aspx.csで
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" OnItemDataBound="ListView1_ItemDataBound"> 

        <ItemTemplate> 
         <span style=""> 
          <table> 
           <tr> 
            <td style="width=60px"> 
             <asp:Label Text='<%# Eval("UserName") + ":"%>' runat="server" ID="UserNameLabel" Font-Bold="true" /><br /> 
            </td> 
            <td> 
             <asp:Label Text='<%# Eval("body") %>' runat="server" ID="bodyLabel" /><br /> 

            </td> 
            <td> 
             <asp:Button ID="DeleteCommentButton" runat="server" Text="Delete" OnClick="DeleteCommentButton_Click" /> 
            </td> 
           </tr> 
          </table> 
          <br /> 
         </span> 
        </ItemTemplate> 

        <LayoutTemplate> 
         <div runat="server" id="itemPlaceholderContainer" style=""><span runat="server" id="itemPlaceholder" /></div> 
         <div style=""> 
         </div> 
        </LayoutTemplate> 

       </asp:ListView> 
       <asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:DefaultConnection %>' SelectCommand="SELECT Comments.CommentId, Users.UserId, Comments.body, Users.UserName FROM Comments INNER JOIN Users ON Comments.UserId = Users.UserId WHERE NewsId = @NewsId"> 
        <SelectParameters> 
         <asp:Parameter Name="NewsId" Type="Int32" /> 
        </SelectParameters> 
       </asp:SqlDataSource> 

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListViewItemType.DataItem) 
     { 
      ListViewDataItem dataItem = (ListViewDataItem)e.Item; 

      int commentId = (int)DataBinder.Eval(dataItem, "CommentId"); 
... 

答えて

0

私はこのようにそれを解決:

ListViewDataItem dataItem = e.Item as ListViewDataItem; 
int commentId = (int)DataBinder.Eval(dataItem.DataItem, "CommentId"); 
Guid authorId = (Guid)DataBinder.Eval(dataItem.DataItem, "UserId"); 
関連する問題