Если вы не против сделать это в коде, вот как.
Поместите TemplateField
в GridView, связавшись с меткой в ItemTemplate
и подключите событие RowDataBoundGridView для обработчика:
<asp:GridView runat="server" ID="PeopleGridView" AutoGenerateColumns="false" OnRowDataBound="PeopleGridView_OnDataBound" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="NameLabel" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
В обработчике получите DataItem и приведите его к вашему классу Person.Найдите элемент управления Label и задайте для текста свойства из класса:
protected void PeopleGridView_OnDataBound(object sender, GridViewRowEventArgs e)
{
// Make sure it's a DataRow - this will fail for HeaderRow, FooterRow etc
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Get the DataItem and cast it
Person currentPerson = (Person) e.Row.DataItem;
// Locate the Label and set it's text
((Label) e.Row.FindControl("NameLabel")).Text = currentPerson.firstName + " " + currentPerson.lastName;
}
}