.net - 在 .Net 中替代手动构建表/TR/TD?

标签 .net webforms

我这里有一堆代码,看起来像这样:

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 次了吗?有没有更现代的方式?

明确地说:这是一个包含各种标签和值的完整列表。它们不来自任何特定的数据源,并且何时应抑制行的规则各不相同。这个例子只有两列,但我在其他地方有更多列。

编辑以强调:这种数据天生适合 Repeater 或 GridView。

我对 ShoppingCart 中的项目使用 Repeater,它是一个简单的列表。这不是这样的 list ,它是之后的 list :州税、城市税、运费、折扣、特别说明、礼品标签和解释性样板。非常杂乱,通常是可选的,但需要某种组织布局,否则看起来不对。

我可以创建某种自定义列表并将所有内容转储到其中,这样我就可以使用 Repeater,有时我会这样做;但这仍然是一个 hack。

我想我可以让每个项目成为一个 Control,使用 Visible = false,然后在运行时显示需要什么。但布局一些静态文本仍然感觉需要大量编码。

最佳答案

你可以看看GridView在 ASP.NET 中。

关于.net - 在 .Net 中替代手动构建表/TR/TD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969864/

相关文章:

javascript - Asp.Net Web 表单有时会在 Internet Explorer 中奇怪地混合 HTML 和 JavaScript 响应

c# - 如何将参数传递给 C# 中的公共(public)类?

.net - 如何设计可测试性代码

javascript - 逻辑表达式可视化工具

c# - 如何将 Class<Derived> 转换为 Class<Base>?

asp.net-mvc - 在 ASP.NET MVC 中处理表单的正确方法是什么?

javascript - 从一种形式写入另一种形式

asp.net - 将 webforms 项目转换为混合 MVC4 项目

c# - ViewModel 中的 WPF 命令和异常

c# - 更新面板内的链接按钮不起作用