使用对象列表填充gridview列

时间:2013-09-26 00:19:15

标签: c# asp.net

我有一个由对象类填充的消息的gridview。对象中有一个列表,因此对于每条消息,都有一个收件人列表。问题是,现在gridview只为每条消息显示“Person []”。我希望它显示为列表中收件人的计数。

任何帮助都将不胜感激。

HTML

    <asp:GridView
        ID="grdMsgSent"
        runat="server"
        CssClass="cellSpacing"
        OnRowDataBound="grdMsgSent_RowDataBound"
        AllowSorting="True"
        EmptyDataText="You have not sent any messages."
        AllowPaging="True"
        PageSize="6"
        OnPageIndexChanging="grdMsgSent_PageIndexChanging"
        OnSorting="grdMsgSent_Sorting"
        AutoGenerateColumns="False">
<Columns>

<asp:BoundField DataField="Recipients" HeaderText="Recipients" />
</Columns>
</asp:GridView>

C#

grdMsgSent.DataSource = listSentMsg.List;
            grdMsgSent.DataBind();

2 个答案:

答案 0 :(得分:1)

例如,如果您有一个名为UserID的数据列名称,则可以使用Eval(DataBinding Expression)在网格视图中填充。所以你的代码在aspx页面中会是这样的,

<asp:TemplateField HeaderText="UserID" Visible="false">
                                    <ItemTemplate>
                                        <asp:Label ID="lblUserID" runat="server" Text='<%# Eval("UserID") %>' />
                                    </ItemTemplate>
                                </asp:TemplateField>

在C#Code Behind中,

DataTable dataTable = new DataTable();
        DataColumn dataColumn;
        dataColumn = new DataColumn("UserID");

答案 1 :(得分:0)

您可以使用templatefield:

对于array [],请执行以下操作:

<Columns>

    <asp:TemplateField>
        <ItemTemplate>                        
            <asp:Label ID="Label1"  runat="server" Text='<%#Eval("Recipients.Length") %>' />
        </ItemTemplate>
    </asp:TemplateField>

对于List,请执行以下操作:

<Columns>

    <asp:TemplateField>
        <ItemTemplate>                        
            <asp:Label ID="Label1"  runat="server" Text='<%#Eval("Recipients.Count") %>' />
        </ItemTemplate>
    </asp:TemplateField>
相关问题