1

我在我的 test.aspx 页面上动态创建一个复选框表。表的维度(行数和列数)是通过查询数据库来确定的。

在 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 分钟,这等待的时间太长了。

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

提前致谢。

干杯

4

4 回答 4

3

我正在看这条评论:

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

您忽略了这一点,但是当网页加载缓慢时,十分之九是因为它正在执行一些缓慢的数据库操作。

我的猜测是(a)您的数据库查询效率非常低,可能是由于缺乏索引,或者(b)您在某处的循环内运行数据库查询(非常糟糕)。

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

于 2010-02-11T03:51:10.220 回答
1

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

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

就像我说的...启用 TRACE 并找出真正占用的时间!使用该工具,这就是它存在的原因。

于 2010-02-10T22:08:59.917 回答
0

尝试禁用 Firebug 并查看它是否仍然需要那么长时间。还要仔细检查您的代码没有生成比您预期更多的复选框。

于 2010-02-11T03:41:04.340 回答
0

创建控件 (CheckBox) 并从服务器端添加到持有者非常便宜。考虑到你没有创造数十亿美元

生成的 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还是简单Div的 with ID = "holderPanel"andrunat="server"

于 2010-02-10T15:31:44.487 回答