thoughts on programming and computer related stuff RSS 2.0
# Wednesday, September 03, 2008

All most every ASP.NET website I have seen, uses Databinder.Eval(Container.DataItem, "colum1") in repeaters to get the data passed in and show it on screen. The problem with Databinder.Eval is that it uses reflection to evaluate the item. This is time consuming and unnecessary, so instead, one should use casting to obtain the same effect. Try not to do it this way:

<asp:repeater id="rptAccounts" runat="server">
    <itemtemplate>
        <%# Databinder.Eval(Container.DataItem, "colum1") %> <br />
    </itemtemplate>
</asp:repeater>

But use this one instead:

<asp:repeater id="rptAccounts" runat="server">
    <itemtemplate>
        <%# ((BusinessObjects.Object)Container.DataItem).Column1 %> <br />
    </itemtemplate>
</asp:repeater>

This will also give you a compiler warning if the members of a class should change, and
not just runtime fail such as the first example. If you are not using business
objects, but a DataTable, you can  cast
to datarow and get the column right out of there like this:


<asp:repeater id="rptAccounts" runat="server">     <itemtemplate>         <%# ((DataRow)Container.DataItem)["Column1"] %> <br />     </itemtemplate> </asp:repeater>

This both increases speed and makes the application more robust to runtime errors. A win-win situation:)



Wednesday, September 03, 2008 6:42:36 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.NET | ASP.NET
Comments are closed.
Navigation
Archive
<July 2010>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Gaute Magnussen
Sign In
Statistics
Total Posts: 17
This Year: 0
This Month: 0
This Week: 0
Comments: 1
Themes
Pick a theme:
All Content © 2010, Gaute Magnussen
DasBlog theme 'Business' created by Christoph De Baene (delarou)