【问题标题】:Does using Labels in TemplateField in Gridview cause performance issues?在 Gridview 的 TemplateField 中使用标签会导致性能问题吗?
【发布时间】:2012-11-20 21:12:08
【问题描述】:

Gridview *BoundFields* 更改为带有 LabelsTemplateFields 是否存在显着的性能问题? (请参阅下面的代码摘录)

由于 gridview 字段的大量需求更改,我计划实施上述更改,以使代码更易于维护。当字段只是重新排列时,需要较少的代码更改。

使用 BoundFields 似乎更容易出错,因为必须非常小心地跟踪所有 单元格索引 的出现。尤其是 Gridviews 有很多可以在任何地方访问的字段。

感谢任何帮助/建议。

提前致谢。

标签:

在页面上:

<asp:TemplateField HeaderText="Field1">
     <ItemTemplate>
         <asp:Label ID="lblField1" runat="server" Text='<%# Eval("Field1")%>' />
     </ItemTemplate>
</asp:TemplateField>

在代码中:

Label lblField1 = row.FindControl("lblField1") as Label;
if (lblField1 != null) { string field1 = lblField1.Text; }

边界域:

在页面上:

<asp:BoundField DataField="Field1" HeaderText="Field1" />

在代码中:

string field1 = row.Cells[2].Text;

【问题讨论】:

    标签: performance gridview cells templatefield boundfield


    【解决方案1】:

    使用 hastable dataItem 代替单元格对象

    数据项(“字段 1”)。那么你就不用担心单元格索引了。

    编辑:除非您在页面加载时重新绑定网格,否则它会出现,否则您将无法使用数据项。

    话虽如此,我无法证实这一说法,但我认为模板字段会更适合您的需求,因为认为它可能更密集处理,您将获得对该对象的引用以进行额外处理。

    基本上,绑定字段解析为表格中的单元格,而标签将解析为具有引用的跨度。 DOM 会有所不同,您对数据的访问也会有所不同。

    因此,使用标签会产生更多开销,但您会更容易访问。

    我不会说存在“重大”性能问题,除非您当然没有分页数百条记录。那么我猜想绑定字段会不那么密集,因为您没有生成那么多的 html。

    【讨论】:

    • 你能发布一个有点工作的代码吗?我尝试使用“row.DataItem(“Field1”),但它说我不能将它用作一种方法。还尝试了“row.DataItem [“Field1”].ToString()”,但它不起作用(得到空值)。编码"DataRowView rowView = (DataRowView)row.DataItem" 然后使用 "rowView["Field1"].ToString()" 也不起作用(无法对对象应用索引)。
    • 不确定缺少什么。如果您有一个有效的 GridView Row,那么数据项应该存在。
    • 我也不确定我错过了什么。 GridViewRow 行是有效对象,但其中的 DataItem 为空,因此我无法实现您的解决方案。不过感谢您的提示。
    • 如果该行不是数据行,则数据项可能为空。您确定在尝试获取字符串时只查看数据行吗?
    • 好的,DataItem 似乎只在 RowCreated 和 RowDataBound 事件中可用。 forums.asp.net/t/1539224.aspx/1。是的,RowType 是 DataRow。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多