渲染出一张桌子
问题描述:
我正在研究一个将摄氏温度转换成华氏温度的应用程序,反之亦然。渲染出一张桌子
该应用程序包含字段和单选按钮。用户填入“开始温度”,“结束温度”和“迭代器”并选择从C到F或F到C的转换。
点击一个按钮之后,表格会呈现C温度,转换F中的温度(反之亦然)。我试图用while循环和for循环来完成它,但它不能正常工作。
我知道这是一个不必要的复杂的解决方案,我真的应该明白帮助创建一个更优雅的解决方案,即工作。
var i = 0;
while (startTemp < endTemp) {
i += 1;
TableRow tRow = new TableRow();
tRow.CssClass = (i % 2 == 0 ? "white" : "grey");
tempTable.Rows.Add(tRow);
startTemp = startTemp + iterator;
if (startTemp < endTemp) {
for (int j = 0; j <= 1; j++) {
TableCell tCell = new TableCell();
if ((j % 2) == 0) {
tCell.Text = startTemp.ToString();
}
else {
if (tempType1 == "°C") {
convertedTemp = TemperatureConverter.CelsiusToFahrenheit(startTemp);
}
else {
convertedTemp = TemperatureConverter.FahrenheitToCelsius(startTemp);
}
tCell.Text = convertedTemp.ToString();
}
tRow.Cells.Add(tCell);
}
}
求购输出(迭代器= 2):
Ç--------------------˚F
39 102
41 105
43 109
45 113
47 116
49 120
编辑:该解决方案工作正常,除了一件事。如果我使用1作为开始温度,10作为结束温度和1作为迭代器,它停在9(不应该在10,因为它应该),我只是不明白为什么。
答
您的解决方案是好的,但我能做的只有1环
TableRow tRow
TableCell tCell
for(int i = startTemp; i < endTemp; i += iterator)
{
tRow = new TableRow();
tRow.CssClass = (i % 2 == 0 ? "white" : "grey");
tempTable.Rows.Add(tRow);
tCell = new TableCell();
tCell.Text = i.ToString();
tRow.Cells.Add(tCell);
tCell = new TableCell();
tCell.Text = convert(i);
tRow.Cells.add(tCell);
tempTable.Rows.Add(tRow);
}
你停在9,因为 在while循环的开头你做9 + = 1
,所以我= 10,则如果(10 < 10) 所以它停在那里
所以,如果你能做到(startTemp < = endTemp)
答
你拥有它的方式并不差。您也可以使用一个类来存储数据:
public class ConvertData
{
public decimal Celsius { get; set; }
public decimal Fahrenheit { get; set; }
}
取第一遍并创建ConvertData对象,将它们存储在集合中。然后,收集绑定到一个中继器,ListView控件等
非常感谢!你的解决方案确实比我的更优雅,并且工作得很好,接受它需要以我需要的方式改变。 :) – holyredbeard 2012-02-15 20:35:02