2013-09-26 141 views
0

我有一個由對象類填充的消息的網格視圖。對象中有一個列表,以便每個消息都有一個收件人列表。問題是,現在GridView只顯示每個消息的「Person []」。我希望它顯示爲列表中收件人的數量。使用對象列表填充gridview列

任何幫助,將不勝感激。

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(); 

回答

0

您可以使用一個TemplateField:

爲[]數組,這樣做:

<Columns> 

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

對於列表中,這樣做:

<Columns> 

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

添加評估和演示,我仍然得到了「Service.Person []」中的收件人列。我知道它不是一個空數組,因爲我使用服務客戶端來查看填充了正確數據的列表。 –

+0

你必須這樣做:'Eval(「YourArray.Count」)'。 – afzalulh

+0

我收到一條錯誤消息,告訴我我的數組不包含名爲'Count'的屬性。 –

1

舉例來說,如果你有一個名爲UserID數據列名,您可以在網格視圖使用eval(數據綁定表達式)填充。所以,你的代碼會是這樣的aspx頁面,

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

在後面的C#代碼,

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