使用gridview RowDataBound与ItemTemplate/Reregular数据绑定的条件逻辑的性能

本文关键字:数据绑定 条件逻辑 性能 Reregular gridview RowDataBound ItemTemplate 使用 | 更新日期: 2023-09-27 17:58:46

我有一个包含大约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>

网格返回许多行,在大多数情况下是30000行。网格有分页功能,因此一次只能看到10行。(是的,我确实把数据库中的所有行都带回来了,SQL中没有分页。搜索很复杂,需要时间)

问题是,我应该在RowDataBound事件中执行此逻辑吗?在该事件中,我可以说只有当行可见时才执行此逻辑。这样可以确保一次只处理10个可见行(对于活动页面)。如果我做一个常规的数据绑定,那么数据网格是否足够智能,只对10行执行ItemTemplate逻辑,或者对所有30000行执行ItemTemplate逻辑。这将是不必要的。

为了补充这个问题,我有一些从其他属性派生的Template列。如果我执行常规的数据绑定,那么网格是通过每行的所有列进行计算,还是只对可见行进行计算。

我相信如果我使用RowDataBound事件,我可以控制这一切。但另一种选择更方便。如果gridview自动做到这一点,那么我就不用担心了。有什么想法吗?

使用gridview RowDataBound与ItemTemplate/Reregular数据绑定的条件逻辑的性能

RowDataBound和模板字段中的内联代码仅针对活动页面执行(在您的情况下为10行)

若你们并没有做任何复杂的事情,我认为把它作为内联代码保存在模板字段中并没有问题。