2

在这段代码中,我尝试使用 ID 为“Label”的控件“Label”,这项工作但我也想从实体数据源中获取当前的“AuthorUserID”字段我知道我可以这样做,<%# Eval("AuthorUserID" %>) 但我想接受这个代码隐藏方法中的字段,在本例中为“ChatListView_ItemDataBound”方法。

如何在后面的代码中获取当前字段(“AuthorUserID”)?

代码隐藏:

protected void ChatListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        if (e.Item.FindControl("Label") != null)
        {
        }
    }
}

标记:

 <asp:ListView ID="ChatListView" runat="server" DataSourceID="EntityDataSourceUserPosts" OnItemDataBound="ChatListView_ItemDataBound">
    <ItemTemplate>
        <div class="post">
            <div class="postHeader">
                <h2><asp:Label ID="Label1" runat="server" 
                    Text= '<%# Eval("Title")  + " by " + this.GetUserFromPost((Guid?)Eval("AuthorUserID")) %>' ></asp:Label></h2>
                    <asp:Label ID="Label" runat="server" Text="" Visible="True"></asp:Label>
                <div class="dateTimePost">
                   <%# Eval("PostDate")%>
                </div>
            </div>
            <div class="postContent">
                <%# Eval("PostComment") %>
            </div>
        </div>
    </ItemTemplate>
</asp:ListView>
4

4 回答 4

3

尝试这个。将标记更改为

<asp:Label ID="Label" runat="server" 
        Text="" 
        Visible='<%# CheckIfAuthorIsUser(Eval("AuthorID")) %>'>
</asp:Label>

在代码隐藏上,执行此操作

protected bool CheckIfAuthorIsUser(object authorID)
{
    if(authorID == null){ return false;}
    //else compare the passed authorid parameter with the logged in userid and return the appropriate boolean value

}
于 2013-02-16T09:05:34.327 回答
0

根据我们的评论,这段代码可能会有所帮助

在页面中创建一些属性,该属性将返回说 UserID 然后

<ItemTemplate>

  <asp:Label ID="lbl" Visible='<%# UserID == Convert.ToInt32(Eval("AuthorID")) %>' />

</ItemTemplate>
于 2013-02-16T08:54:14.897 回答
0

尝试这个

将数据键添加到您的 ListView

<asp:ListView ID="ChatListView" runat="server" OnItemDataBound="ChatListView_ItemDataBound"
        DataKeyNames="AuthorUserID">

并在 Code behind 中获取该密钥

string AuthorUserID = ChatListView.DataKeys[e.Item.DataItemIndex].Value.ToString();
于 2013-02-16T09:02:28.650 回答
0

您可以使用ListViewItemEventArgs e

protected void ChatListView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            if (e.Item.FindControl("Label") != null)
            {
               var AuthorUserID = (string)e.Item.DataItem.e.Item.DataItem.AuthorUserID ;
            }
        }
    }

注意 我不知道你是有界class object还是 a datatable,如果你有界一个数据表,你应该注意转换存储在DataItem

基本上e.Item.DataItem保存来自您的数据源的数据

欲了解更多信息,请查看:

于 2013-02-16T08:59:46.700 回答