Отображение нескольких полей данных в BoundField Gridview

У меня есть asp:GridView, который связан. Внутри этого у меня есть несколько столбцов, я пытаюсь получить данные из двух полей базы данных, объединенных в одно поле.

Как это сделать?

Что-то вроде этого?

asp:BoundField DataField="field1 + ' ' + field2" HeaderText="Status" SortExpression="info"

Ответ 1

Довольно точно вам нужно использовать TemplateField вместо BoundField для этого.

В блоке Columns GridView:

    <asp:TemplateField HeaderText="Name">
        <ItemTemplate>
            <%# Eval("FirstName") + " " + Eval("LastName")%>
        </ItemTemplate>
    </asp:TemplateField>

Ответ 2

Просто для полноты, потому что я искал решение и пришел первым сюда...

У вас больше гибкости при использовании string.Format()

<asp:TemplateField HeaderText="Status">
 <ItemTemplate>
     <%# string.Format("{0} {1}", Eval("field1") ,Eval("field2"))%>
 </ItemTemplate>
</asp:TemplateField>

Здесь вы также можете использовать возможности string.Format() для форматирования типов даты и чисел, как описано здесь: https://docs.microsoft.com/en-us/dotnet/standard/base-types/formatting-types

Образец:

<%# String.Format("{0:MM/dd/yyyy} - {1:N2}", Eval("dateValue1"), Eval("decimalValue2")) %>

Другим вариантом является сделать это в пользовательском методе с кодом позади

ASPX:

<asp:TemplateField HeaderText="Status">
   <ItemTemplate>
      <asp:Label runat="server" Text='<%#GetStatus(Eval("Status1"),Eval("Status2")) %>'>
      </asp:Label>
   </ItemTemplate>
</asp:TemplateField>

Codebehind:

public string GetStatus(object Status1, object Status2)
{
    return (string)Status1 + " " + (string)Status2;
}

Ответ 3

ToolTip='<%# Eval("LastName") & "-" & Eval("FirstName") %>'

Ответ 4

Попробуйте это. Если u использует два набора данных, сделайте их с одним datatable и привяжите его к gridview.

<asp:BoundField DataField="<%# DataBinder.Eval(Container.DataItem, "f1")%>+ ' ' + <%# DataBinder.Eval(Container.DataItem, "f2")%>" HeaderText="Status" SortExpression="info"/>