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!我还以为有个接班人我只是没找过