渲染出一张桌子

时间:2012-02-15 19:51:06

标签: c# asp.net

我正在开发一个将Celsius转换为Fahrenheit的应用程序,反之亦然。

该应用程序包含字段和单选按钮。用户填写“开始温度”,“结束温度”和“迭代器”,并选择从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),我只是无法找出原因。

2 个答案:

答案 0 :(得分:3)

你的解决方案很好,但我只做一次循环

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&lt; = endTemp)

答案 1 :(得分:0)

你拥有它的方式也不错。您也可以使用类来存储数据:

public class ConvertData
{
  public decimal Celsius { get; set; }

  public decimal Fahrenheit { get; set; }
}

获取第一遍并创建ConvertData对象,将它们存储在集合中。然后将集合绑定到Repeater,ListView等