0

我在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[]。

我的最终目标是让工具提示显示以逗号分隔的收件人姓名列表。

任何帮助表示赞赏。

4

1 回答 1

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 也更具可读性、可维护性且不易出错。

于 2013-09-28T22:25:45.180 回答