Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VBNET,ASPNET
Expertise: beginner
Feb 16, 2002

Improve performance with the EnableViewState property

All Web Forms controls, and the page itself, expose the EnableViewState property, a boolean that says whether the current value of the control must be saved in the __VIEWSTATE hidden field and restored during a page postback.

By default this property is True, which means that a field's value is automatically preserved between postback. This makes a Web Forms behave more similarly to a windows forms. In some cases, however, you can set this property to False and reduce the number of bytes sent along the wire. A good candidate for this arrangement are password fields, which should be cleared any time the form is sent back to the client.

Another case where you may want to set this property to False is when you are building a databound DataGrid. Typically you bind a DataGrid with this code in the Page_Load event handler:


Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles _
    MyBase.Load
    If Not Me.IsPostBack() Then
        ' Create the DataReader
        Dim cn As New OleDbConnection("my connection string")
        Dim cmd As New OleDbCommand("SELECT * FROM MyTable", cn)
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        ' Bind it to the DataGrid
        DataGrid1.DataSource = dr
        DataGrid1.DataBind()
        ' close the DataReader and the Connection
        dr.Close
        cn.Clone
    End If
End Sub
The above code queries the database only once, and then restores the contents of the DataGrid from the __VIEWSTATE field, which means that a lot of data is sent to the client. In some cases you may find that rebinding the DataGrid at each page request might make your application more scalable (also because odds are that the data coming from the query are already in the database's cache):

Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles _
    MyBase.Load
    ' Create the DataReader
    Dim cn As New OleDbConnection("my connection string")
    Dim cmd As New OleDbCommand("SELECT * FROM MyTable", cn)
    Dim dr As OleDbDataReader = cmd.ExecuteReader()
    ' Bind it to the DataGrid
    DataGrid1.DataSource = dr
    DataGrid1.DataBind()
    ' close the DataReader and the Connection
    dr.Close
    cn.Clone
End Sub
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date