我这里有一堆代码,看起来像这样:
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/