Как показать два свойства в одном столбце GRid View asp.net C # - PullRequest
1 голос
/ 07 февраля 2011

У меня есть класс Person, имеющий два свойства: Имя и Фамилия, если я задаю для массива person в качестве источника данных значение GridView, как я могу отображать имя и фамилию в одном столбце?

Thanx

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Используйте поле Tempate и метод Eval:

<asp:GridView runat="server" ID="MyGrid" AutoGenerateColumns="false" 
  DataSourceId="...">       
  <Columns>         
    <asp:TemplateField>         
      <ItemTemplate>         
        <%# Eval("FirstName") %>&nbsp;<%# Eval("LastName") %>
      </ItemTemplate>         
    </asp:TemplateField>     
  </Columns> 
</asp:GridView>
0 голосов
/ 07 февраля 2011

Если вы не против сделать это в коде, вот как.

Поместите 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...