【发布时间】:2011-06-08 19:15:34
【问题描述】:
我有一个包含大约 16 个 ItemTemplate 列的网格视图。每列中的值是十进制属性。在每一列中,我都在做一些条件逻辑来显示 N/A 或实际值等。类似的东西,
<asp:TemplateField HeaderText="Test" ItemStyle-CssClass="test">
<ItemTemplate>
<%# Eval("TestExpense", "{0:n}").ToString() == "-1.00" ? "N/A" : "$" + Eval("TestExpense", "{0:n}")%>
</ItemTemplate>
</asp:TemplateField>
网格返回许多行,在大多数情况下为 30,000。网格有分页,因此一次只能看到 10 行。 (是的,我确实把数据库中的所有行都带回来了,在 SQL 中没有分页。搜索很复杂,需要时间)
问题是,我是否应该在 RowDataBound 事件中执行此逻辑,我可以说仅在行可见时执行此逻辑。这可确保一次仅使用此逻辑处理 10 个可见行(对于活动页面)。如果我进行常规数据绑定,数据网格是否足够智能,可以仅对 10 行执行 ItemTemplate 逻辑,还是对所有 30,000 行执行。这将是不必要的。
为了补充这个问题,我有一些从其他属性派生的模板列。如果我进行常规数据绑定,网格是通过每一行的所有列计算还是只对可见行进行计算。
我相信如果我使用 RowDataBound 事件,我可以控制这一切。但另一种选择更方便。如果gridview自动做到这一点,那我就不用担心了。有什么想法吗?
【问题讨论】: