devxlogo

Improve performance with the EnableViewState property

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 IfEnd 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.CloneEnd Sub

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist