2016-04-08 33 views
2

有没有办法从逗号分隔列表构建HTML表头?从逗号分隔列表生成HTML表头

我正在使用反射从一个类获取属性名称。在此之前,我正在定义要从列表中排除哪些属性。

var toExclude = new HashSet<string> 
    { 
     "ID", 
     "SubSystemID", 
     "System", 
     "Component", 
     "ReferenceNumber", 
     "IsValid" 
    }; 

var propsIndividuals = typeof(Person).GetProperties(BindingFlags.Public | BindingFlags.Instance). 
         Where(property => !toExclude.Contains(property.Name)); 

var header = string.Join(", ", propsIndividuals.Select(p => p.Name.ToString()).ToArray()); 

对于表的内容我用HtmTableRow:

foreach (var invalidIndividual in mailMessageObject.InvalidIndividuals) 
{ 
     rowIndividuals = new HtmlTableRow(); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.FirstName}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.Surname}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.MiddleName}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.DateOfBirth}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.Gender}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.Address1}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.Address2}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.Address3}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.Address4}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.City}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.PostalCode}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.Country}); 
     rowIndividuals.Cells.Add(new HtmlTableCell {InnerText = invalidIndividual.NationalID}); 
     tableIndividuals.Rows.Add(rowIndividuals); 
} 

任何人有知道如何从逗号分隔阵列拉性质的名字,并把他们带到一个新行,我可以追加到表并将其用作标题?

也许有一个更好的方法来拉动带有反射名称的字符串。也许我应该将它们存储在一串字符串或类似的东西中。 任何有关如何处理这个问题的建议,以及可能会更清洁的建议,都会受到欢迎。

回答

1

您可能可以使用MSDN中的示例。

更新您的代码段这样的:

var toExclude = new HashSet<string> 
{ 
    "ID", 
    "SubSystemID", 
    "System", 
    "Component", 
    "ReferenceNumber", 
    "IsValid" 
}; 

var propsIndividuals = typeof(Person).GetProperties(BindingFlags.Public | BindingFlags.Instance). 
         Where(property => !toExclude.Contains(property.Name)); 

var rowHeader = new new HtmlTableRow("th") 

foreach (var property in propsIndividuals) 
{ 
    rowHeader.Cells.Add(new HtmlTableCell { InnerText = property.Name }); 
} 

tableIndividuals.Rows.Add(rowHeader); 
+0

它是否解决问题了吗? –