我想我在这里做的事情非常糟糕。我有一个名为oCultivationPlan的导入对象。它显然包含数据。我想创建一个显示其中数据的表。但是我只希望从该对象中选择少数而不是其中的所有数据。有没有办法缩短它?我想过使用foreach或for,但是会循环遍历对象内的所有数据:/而我只想要一些选定的数据。
TableRow tblRow = new TableRow();
TableCell tblc = new TableCell();
tblc.Controls.Add(new LiteralControl("ID"));
TableCell tblc2 = new TableCell();
tblc2.Controls.Add(new LiteralControl(import.oCultivationPlan.iID.ToString()));
tblRow.Controls.Add(tblc);
tblRow.Controls.Add(tblc2);
tblImportPreview.Controls.Add(tblRow);
TableCell tblc3 = new TableCell();
TableCell tblc4 = new TableCell();
tblc3.Controls.Add(new LiteralControl("Description"));
tblc4.Controls.Add(new LiteralControl(import.oCultivationPlan.sDescription.ToString()));
TableRow tblRow2 = new TableRow();
tblRow2.Controls.Add(tblc3);
tblRow2.Controls.Add(tblc4);
tblImportPreview.Controls.Add(tblRow2);
TableCell tblc5 = new TableCell();
TableCell tblc6 = new TableCell();
tblc5.Controls.Add(new LiteralControl("DateCreated"));
tblc6.Controls.Add(new LiteralControl(import.oCultivationPlan.dDateCreated.ToString()));
TableRow tblRow3 = new TableRow();
tblRow3.Controls.Add(tblc5);
tblRow3.Controls.Add(tblc6);
tblImportPreview.Controls.Add(tblRow3);
答案 0 :(得分:0)
不是foreach :)但你可以使用for循环来获得它。你应该能够使用下面的代码作为你的问题的解决方案:) 它的循环较小,但它与你所做的完全相同。我使用字符串数组来保存你想要进入表格的所有信息,以便它可以在之后发布。 对于每一行,你有2个新单元格,这就是为什么我们有行* 2所以单元格可以填满:)
希望它对您有用,并且您可以使用该解决方案:)
int _row = 1;
int _cell = 0;
string[] arr = new string[6] { "ID", import.oCultivationPlan.iID.ToString(), "Description", import.oCultivationPlan.sDescription.ToString(), "DateCreated", import.oCultivationPlan.dDateCreated.ToString() };
for (; _row <= 3; _row++)
{
TableRow tblRow = new TableRow();
for (; _cell < _row * 2; _cell++)
{
TableCell tblc = new TableCell();
tblc.Controls.Add(new LiteralControl(arr[_cell]));
tblRow.Controls.Add(tblc);
}
tblImportPreview.Controls.Add(tblRow);
}
答案 1 :(得分:0)
我会创建一个强类型的类
public Class ImportDto
{
public string RowIdentifier {get; set;}
public string RowValue {get; set;
}
然后正如David所说,编写一个过滤函数来过滤Import类中的数据并将其映射到ImportValues
public List<ImportDto> FilterImportedData(Import import)
{
var importDto = new List<ImportDto>
{
new ImportDto { RowIdentifier ="ID", RowValue = import.oCultivationPlan.iID.ToString()},
new ImportDto { RowIdentifier ="Description", RowValue = import.oCultivationPlan.sDescription.ToString()}
};
}
然后在aspx.cs类中,只需遍历List<ImportDto>
并创建LiteralControls
foreach(var dto in importDtos)
{
var row = new TableRow();
var identifierCell = new TableCell();
var valueCell = new TableCell();
identifierCell.Controls.Add(new LiteralControl(dto.RowIdentifier));
valueCell.Controls.Add(new LiteralControl(dto.RowValue ));
row.Add(identifierCell);
row.Add(valueCell);
tblImportPreview.Controls.Add(row);
}
这样你将来需要做的就是添加新的过滤数据,就是修改你的映射函数并添加一个新的ImportDto,它会自动显示在前端。