10000行(列は5列)のレコードを持ったDataTableを
asp.net4(vb.net)のasp:listviewのdatasourceに設定し、bindして一覧を表示しています。

ブラウザの描画が完了するまで、1分ほど掛かるのですが、これをもっと早く描画されるようにしたいです。

datasourceに設定するものをDataTableではなく、Listを設定するようにしたら、少しは早くなるでしょうか?

listviewのViewStateを無効にしたら早くなるのでしょうか?
次画面から、戻った時にテキストボックスの入力値を再現したいので、ViewStateは有効にしたいところではありますが。

他にも方法がありましたら、教えてください。

よろしくお願いします。

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblTime" runat="server"></asp:Label>

        <asp:ListView ID="listView" runat="server" EnableViewState="True">
            <LayoutTemplate>
             <table border="1" cellpadding="1">
              <tr style="background-color:#E5E5FE">
               <th align="left">col001</th>
               <th align="left">col002</th>
               <th align="left">col003</th>
               <th align="left">col004</th>
               <th align="left">col005</th>
              </tr>
              <tr id="itemPlaceholder" runat="server"></tr>
             </table>
            </LayoutTemplate>
            <ItemTemplate>
              <tr>
               <td><asp:Label runat="server" ID="lblCol001"><%#Eval("col001") %></asp:Label></td>
               <td><asp:Label runat="server" ID="lblCol002"><%#Eval("col002") %></asp:Label></td>
               <td><asp:Label runat="server" ID="lblCol003"><%#Eval("col003") %></asp:Label></td>
               <td><asp:Label runat="server" ID="lblCol004"><%#Eval("col004") %></asp:Label></td>
               <td><asp:Label runat="server" ID="lblCol005"><%#Eval("col005") %></asp:Label></td>
              </tr>
            </ItemTemplate>
        </asp:ListView>
    </div>
    </form>
</body>
</html>


Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim start As Date = Date.Now

'''''''''''実際は、SQLを発行し、取得結果をDataTableとして取得しています。

        'Dim data As New DataTable

        'data.Columns.Add("col001")
        'data.Columns.Add("col002")
        'data.Columns.Add("col003")
        'data.Columns.Add("col004")
        'data.Columns.Add("col005")

        'For i = 0 To 10000 - 1
        '    Dim row As DataRow = data.NewRow()
        '    row("col001") = i.ToString() & "あいうえおかきくけこ"
        '    row("col002") = i.ToString() & "あいうえおかきくけこ"
        '    row("col003") = i.ToString() & "あいうえおかきくけこ"
        '    row("col004") = i.ToString() & "あいうえおかきくけこ"
        '    row("col005") = i.ToString() & "あいうえおかきくけこ"
        '    data.Rows.Add(row)
        'Next


        Dim data As New List(Of TITEM)

        For i = 0 To 10000 - 1

            Dim it As New TITEM
            it.col001 = i.ToString() & "あいうえおかきくけこ"
            it.col002 = i.ToString() & "あいうえおかきくけこ"
            it.col003 = i.ToString() & "あいうえおかきくけこ"
            it.col004 = i.ToString() & "あいうえおかきくけこ"
            it.col005 = i.ToString() & "あいうえおかきくけこ"

            data.Add(it)

        Next


        Me.listView.DataSource = data
        Me.listView.DataBind()


        Dim tend As Date = Date.Now
        Dim span As Double = (tend - start).TotalSeconds()

        Me.lblTime.Text = String.Format(" {0:#.00} sec", span)

    End Sub

End Class


Public Class TITEM
    Public Property col001 As String
    Public Property col002 As String
    Public Property col003 As String
    Public Property col004 As String
    Public Property col005 As String
End Class