在这段代码中,我试图将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)
{
}
}
}
答案 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 object
或datatable
,如果您绑定了数据表,则应该注意转储存储在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();