Rendering out a table
本文关键字:table out Rendering | 更新日期: 2023-09-27 18:24:39
我正在开发一个将摄氏度转换为华氏度的应用程序,反之亦然。
该应用程序包含个字段和个单选按钮。用户填写"开始温度"、"结束温度"answers"迭代器",并选择从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):
C--------------------F
39 102
41 105
43 109
45 113
47 116
49 120
编辑:除了一件事之外,这个解决方案运行良好。如果我用1作为起始温度,用10作为结束温度,用1作为迭代器,它会在9处停止(而不是应该在10处),我就是不明白为什么。
你的解决方案很好,但我只会做一个循环
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
所以i=10,那么如果(10<10)所以它停在那里
因此,如果(startTemp<=endTemp)
你拥有它的方式还不错。您也可以使用一个类来存储数据:
public class ConvertData
{
public decimal Celsius { get; set; }
public decimal Fahrenheit { get; set; }
}
首先创建ConvertData对象,将它们存储在集合中。然后将集合绑定到Repeater、ListView等。