Eval在代码隐藏中

时间:2013-02-16 08:39:44

标签: c# asp.net listview eval code-behind

在这段代码中,我试图将ID为“Label”的控件“Label”,这项工作,但我也想从实体数据源获取当前的“AuthorUserID”字段我知道我可以用{{1但我想在代码隐藏方法中使用此字段,在本例中为“ChatListView_ItemDataBound”方法。

如何在代码中使用当前字段(“AuthorUserID”)?

代码隐藏:

<%# Eval("AuthorUserID" %>)

标记:

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

4 个答案:

答案 0 :(得分: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

}

答案 1 :(得分:0)

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

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

<ItemTemplate>

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

</ItemTemplate>

答案 2 :(得分: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 objectdatatable,如果您绑定了数据表,则应该注意转储存储在DataItem

中的数据

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

有关详细信息,请参阅:

答案 3 :(得分:0)

试试这个

将数据键添加到ListView

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

在Code中获取该密钥

string AuthorUserID = ChatListView.DataKeys[e.Item.DataItemIndex].Value.ToString();