我有一个包含大约16个ItemTemplate列的gridview。每列中的值都是十进制属性。在每一列中,我正在做一些条件逻辑来显示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个可见行(对于活动页面)。如果我做一个常规的数据绑定,那么datagrid是否足够聪明,只能为10行执行ItemTemplate逻辑,或者它是否适用于所有30,000行。那是不必要的。
要添加到此问题,我有一些从其他属性派生的模板列。如果我执行常规数据绑定,网格是否计算每行的所有列,或仅针对可见行进行计算。
我相信如果我使用RowDataBound事件,我可以控制所有这些。但另一种选择更方便。如果gridview自动执行此操作,那么我不必担心它。有什么想法吗?
答案 0 :(得分:1)
RowDataBound和模板字段中的内联代码仅针对活动页面执行(在您的情况下为10行)
如果您没有做任何复杂的事情,我认为将其保留为模板字段中的内联代码没有问题。