代码之家  ›  专栏  ›  技术社区  ›  egrunin

在.Net中替代手工构建表/TR/TD?

  •  3
  • egrunin  · 技术社区  · 14 年前

    我这里有一堆代码如下:

    if (stateTax > 0)
    {
        tr = new TableRow();
        tbl.Rows.Add(tr);
        td = new TableCell();
        td.CssClass = "stdLabel";
        td.Text = "NY State Tax";
        tr.Cells.Add(td);
    
        td = new TableCell();
        td.Text = string.Format("{0:C}", stateTax);
        td.CssClass = "justRight";
        tr.Cells.Add(td);
    }
    

    这是一个可怕的数据和布局散列,但创建一个特殊的类或控件,每次这样的事情出现似乎几乎一样糟糕。

    if (stateTax > 0)
        MakeRow(tbl, "NY State Tax", "stdLabel", 
                     string.Format("{0:C}", stateTax), "justRight");
    

    现在我在想:我以前不是做过100次吗?难道没有更现代的方式吗?

    编辑以强调: 这种数据是 自然适合中继器或网格视图。

    我在购物车里用一个转发器,这是一个简单的列表。这是 之后 :国税、市税、运费、折扣、特别说明、礼品标签和解释模板。很杂,通常是可选的,但是需要某种组织布局,否则看起来就错了。

    我想我可以把每一件都做成 Control ,与 Visible = false ,然后显示运行时所需的内容。但它仍然感觉像是为布局一个小的静态文本编写了很多代码。

    4 回复  |  直到 14 年前
        1
  •  6
  •   Mark Byers    14 年前

    你可以看看 GridView

        2
  •  2
  •   mamoo    14 年前

    尽可能避免将逻辑后面的代码与表示材料绑定在一起。

    你可以看一个相当简单的例子。。。

    http://articles.sitepoint.com/article/asp-net-repeater-control

        3
  •  0
  •   Jeff Schumacher    14 年前

    不过,我再也不用这种模式了。现在我所有的网格都是基于JavaScript的,并使用Ajax检索要加载到其中的数据。

        4
  •  -1
  •   Mike Cellini    14 年前

    我能想到两种方法你可以完成你想做的事。。。

    1. 创建用户控件或自定义控件,并将数据写入其中包含的属性。