C# 如何显示";“真的”;如果asp:DataGrid上的列表中有项目

C# 如何显示";“真的”;如果asp:DataGrid上的列表中有项目,c#,asp.net,wpf,datagrid,C#,Asp.net,Wpf,Datagrid,以下是我的设置: public class A { string FirstName{get;set;} string LastName{get;set;} List<Object> MyItems{get;set;} } 公共A类 { 字符串名{get;set;} 字符串LastName{get;set;} 列出MyItems{get;set;} } 我的aspx页面设置: <asp:DataGrid AutoGenerateColumns="false

以下是我的设置:

public class A
{
   string FirstName{get;set;}
   string LastName{get;set;}
   List<Object> MyItems{get;set;}
}
公共A类
{
字符串名{get;set;}
字符串LastName{get;set;}
列出MyItems{get;set;}
}
我的aspx页面设置:

<asp:DataGrid AutoGenerateColumns="false" runat="server" ID="dgMyData" CellPadding="7">
    <Columns>
        <asp:BoundColumn DataField="Subject" HeaderText="Subject" />
        <asp:BoundColumn DataField="EntryDate" HeaderText="Entry Date" />
    </Columns>
</asp:DataGrid>

我的问题:

假设我使用类A(或列表myList)作为数据源, 如果MyItems列表中有项目,我想在这里添加另一列,说“是”或“真”。我不需要在此页面上显示这些项目,但我需要指出它们是否存在


我该怎么做呢?我已经查看了itemtemplate列,但有点不确定如何处理这些数据。

我不确定这是否有助于您/我是否了解问题,但创建一个新列并将其绑定到

(MyItems.Any()).toString()
能帮你吗

你也可以

MyItems.Any() ? "items exist" : "no items"
最简单的解决方案是添加一个新属性来保存要显示的文本字符串,如下所示:

public class A
{
   string FirstName{get;set;}
   string LastName{get;set;}
   List<Object> MyItems{get;set;}
   string Info {get { return MyItems.Count > 0 ? "items exist" : "no items"; }}
}
公共A类
{
字符串名{get;set;}
字符串LastName{get;set;}
列出MyItems{get;set;}
字符串信息{get{return MyItems.Count>0?“存在项”:“无项”}
}
并向模板添加一个新列

<asp:BoundColumn DataField="Info" HeaderText="Items Exist ?" />

如果不想更改对象类,请尝试使用模板列,如:

<asp:TemplateColumn HeaderText="Items Exist ?">
    <ItemTemplate>
       <%#(Container.DataItem("MyItems") as IEnumerable<object>).Any()%>
    </ItemTemplate>
</asp:TemplateColumn>

所以建议的答案(也是我试图避免的)是向我的对象类添加另一个变量

由于该类在很多地方使用,并且我不想添加对象,因此我能够确定使用ItemTemplate解决此问题的方法:

    <asp:TemplateColumn>
        <ItemTemplate>
            <asp:Label Text='<%# Int32.Parse(DataBinder.Eval(Container.DataItem, "Files.Count").ToString()) > 0 ? "Yes" : "No" %>' runat="server" />
        </ItemTemplate>
    </asp:TemplateColumn>

如果在新页面上使用此选项,则最好使用asp GridView而不是DataGrid。GridView是数据网格的继承者,提供了更大的灵活性


DataGrid是一个ASP.NET 1.1控件。GridView是2.0版本的。有关比较的更多信息,请阅读这里

@Andre:是的,你的更优雅。Thanks@oppassum:您的网格应该显示什么?对象列表?@Veverke如我在问题中所述,如果列表中有项目,我想显示“是”或“真”。我不确定我刚刚添加的内容是否有效,没有测试过。是的,我刚刚添加了一个模板列。但是不使用EvalThanks!我还以为有个接班人我只是没找过