2010-02-10 47 views
1

我在我的test.aspx页面上动态创建了一个复选框表。通过查询数据库来确定表的维数(行数和列数)。ASP.NET页面包含动态元素,加载需要时间

在Test.aspx的页面,我做到以下几点:

<script language="C#" runat="server"> 

protected void Page_Load (object src, EventArgs e) { 
    //Query the database to get the data for rows and columns 

    CheckBox[] chkBox = new CheckBox[rows * columns]; //creates a collection of checkboxes 

    //Iterate over the query set in a double for loop to create dynamic checkboxes 
} 

</script> 

现在我有行= 20,列= 10的数量,但它可以增加(与列更有可能)。

我曾经在Firebug Net标签,以确定由不同的事件所花费的时间,发现GetTest.aspx正在接近4分钟,这是太长的时间来等待。

有没有办法降低页面加载时间?我的创建动态复选框的方法是否正确?

在此先感谢。

欢呼声

+1

我会建议将您的数据绑定到checkboxlist - 但是 - 您的page_load事件中没有足够的信息来说明为什么您的页面需要4分钟才能加载。 – FiveTools

回答

0

的控制(复选框)创建并添加到从服务器侧的保持器是非常廉价的。考虑到你没有创建亿元

生成的HTML不应该大到在本地计算机上花费4分钟的时间。

请检查生成的HTML大小以验证其质量。

如果我是你,那么我会写下我的服务器上的代码。请考虑。

protected void Page_Load(object src, EventArgs e) { 
    for (int i = 0; i < rows; i++) { 
     for (int j = 0; j < columns; j++) { 
      holderPanel.Controls.Add(
        new CheckBox { 
          ID = string.Format("chk{0}{1}", i, j), 
          Text = "some text" 
      }); 
     } 
    } 
} 

考虑holderPanel是一个服务器端asp:Panel或简单DivID = "holderPanel"runat="server"

1

在页面上启用ASP.NET跟踪和看到所有的时间都花在。对于任何页面来说,四分钟当然太长了。你列出两个虽然... test.aspx和GetTest.aspx ...什么是GetTest.aspx?

编辑:
好的,你不是在这里告诉我们整个故事。这个页面还在做什么?这些控制在哪里?我只是在测试页面上使用类似于上面的代码尝试了这一点,它在瞬间呈现。

就像我说的......启用TRACE并找出真正占用的东西!使用该工具,这就是为什么它在那里。

+0

GetTest.aspx是Firebug的Net选项卡上的标签,显示获取Test.aspx页面所用的时间。 – Arnkrishn

+0

Gotcha。查看我的编辑。 – Bryan

+0

我认为这个问题不在复选框生成中,而是在db层中。 – NotMe

0

尝试禁用萤火虫&看它是否仍然需要那么长。再仔细检查一下,你的代码没有产生比你想象的更多的复选框。

3

我期待在此评论:

// Query the database to get the data for rows and columns 

你掩饰这一点,但9次了10年当Web页面加载缓慢,那是因为它的执行速度慢一些数据库操作。我的猜测是(a)你有一个非常低效的数据库查询,可能是由于缺乏索引,或者(b)你在一个循环内(非常糟糕)运行数据库查询。

ASP.NET可以在不到1秒内创建数千个复选框。这只是类实例化。这个问题在别的地方。