我在gridview中有以下代码段:
<ItemTemplate>
<asp:Label
ID="lblRecipientsCount"
runat="server"
Text='<%#String.Join(",",((Share.Service.Message)Container.DataItem).Recipients.Count()) %>'
ToolTip='<%#String.Join(","((Share.Service.Message)Container.DataItem).Recipients.ToString()) %>'>
</asp:Label>
</ItemTemplate>
对收件人进行计数的数据绑定标记可以正常工作。当我将第二个绑定标记添加到工具提示时,工具提示显示Share.Service.Person []。
我的最终目标是让工具提示显示逗号分隔的收件人名称列表。
感谢任何帮助。
答案 0 :(得分:0)
我只想使用RowDataBound
:
protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var message = (Share.Service.Message)e.Row.DataItem;
var lblRecipientsCount = (Label)e.Row.FindControl("lblRecipientsCount");
lblRecipientsCount.Text = message.Recipients.Count();
lblRecipientsCount.ToolTip = string.Join(",", message.Recipients.Select(rec => rec.Name));
}
}
数据绑定表达式不支持复杂的lambda表达式(afaik)。
Codebehind也更具可读性,可维护性并且不易出错。