2016-04-08 7 views
2

カンマ区切りリストからHTMLテーブルヘッダを構築する方法はありますか?カンマ区切りリストからHTMLテーブルヘッダを生成

私はリフレクションを使用して1つのクラスからプロパティ名を取得しています。その前に、そのリストを除外するプロパティを定義しています。

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

誰もが、私は、テーブルに追加できることをどのようにカンマで区切られた配列からプロパティ名を引き、そして新しい行にそれらを置くためのアイデアを持っている:私はHtmTableRowを使用したテーブルの内容については

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

ヘッダーとして使用しますか?

おそらく、リフレクションを使用して名前付き文字列を取得するより良い方法があります。たぶん、私はそれらを文字列のリストなどに格納する必要があります。 これをどのように処理するかについてのご意見は、歓迎する以上のものになります。

答えて

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

をそれはあなたの問題を解決していますか? –