2011-05-27 65 views
1

好日子大家..载入和显示内容逐渐

我已经开发了DotNetNuke的模块,其中,我可能dislpay一个非常大的数据量,并在页面需要被加载到相当长的时间浏览器。 目前,在page_load期间,我只需从数据库获取数据并将其用作数据源来填充数据网格。

我想要做的是逐步加载和显示页面内容,以便快速向用户显示页面,然后一次填充数据网格,增强用户体验。我试图实现AJAX功能来实现这一点,但我很难搞清楚如何。

今天早上我开始看看,现在我可以在dotnentnuke中做一些基本的ajax植入术,但是我很难找到大纲类似实现的教程,或者自己弄清楚。

如果可以在不改变当前结构的情况下实现这一点,可以逐步获取数据并向DataGrid添加行,这样可以,但如果它会导致性能下降,我宁愿更改所有内容并在其他方式。另外,我认为AJAX是最好的选择,但如果应用程序能从中受益,我可以评估实现不同解决方案的可能性。

谢谢你在前进,

阿尔贝托

[编辑]

我已经部分解决了我的问题:

我改变了存储过程,以获取 “N” 行启动SQL来自特定索引“x”。

在asp:timer的每个循环中,我获取一组“n”行,并将视图状态保存到下一个起始索引“x”中,以便准备好获取下一组行。

在这一点上,在每个周期我有一个我的整个列表,我准备好显示给用户。

这里存在最后一个问题:是否可以将新行添加到已有的DataBound项目?

正如原来的帖子中提到的那样,此刻我正在使用一个asp:datagrid。将控件更改为显示数据没有问题,但我无法找到任何具有“部分数据绑定”功能的控件的引用。

现在唯一明显的解决方案是直接将每个控件添加到我的页面,但对我来说,它似乎只是一个“优雅”的一切;此外,每行包含13个控件,放置在我的数据网格中相当复杂的TemplateColumn中。

任何人都有更好的主意?

预先感谢您

[编辑2]

我越来越接近解决方案(实际上是两个可能的解决方案)

  • A液 通过越来越熟悉阿贾克斯和动态添加控制,我Techincally能够通过动态添加控件来“伪造”数据网格的数据显示。

  • 溶液B 那我现在测试的解决方案是,

第1步 - 数据绑定所有的行仅与数据的很小一部分数据网格,以便使所有行,但大大减少加载时间。

第2步 - 在asyncpostbacks期间,我获取行组并填写其余数据。

我会再次更新,当我有一些好的结果。

在此期间,我仍然接受建议和/或替代性解决方案

二年即可回收的一天!

+0

注意:datagrid disaplys列表与关于内容的基本信息;当我点击特定行中的一个按钮时,模块会执行回发功能,隐藏数据网格,并显示页面的另一部分以及其他数据,以及我可以在哪里编辑内容。保存,关闭或删除所选项目时,会发生另一个回发,返回到数据网格并重新加载数据,以便最终删除或更改修改的项目。该功能必须保留在最终产品中。 再次感谢你 – Alberto 2011-05-27 16:01:19

回答

0

因为“此功能必须保持在最终产品”为你评论,我建议两种解决方案为您提供:

首先是实现AJAX“请告诉我们您的问题正是”

第二类解决方案就像是一个把戏“我之前做过的”

您不必每次都绑定所有数据,您可以通过添加一个新行来为列的行数或行数添加一列,您可以使用ROW_NUMBER()来做到这一点。 现在让我们回到模块中的网格,假设您的网格页面大小为10行, 在page_load事件中,而不是page.postback中,您为以下SQL命令绑定结果 “Select Your_StoredProcedure_Or_View中的-Columns-其中RowNumber 1到10" 之间

如果在Page_Load事件page.postback你绑定了下面的SQL命令

结果 “从Your_StoredProcedure_Or_View选择-Columns-其中ROWNUMBER 20和30” 之间

--IF第(3)页 - 例如 -

并且您必须将当前页面存储在变量中或查询字符串中。 这只是作品,

+0

嗨Alaaeddin,谢谢你的回答 – Alberto 2011-06-01 06:44:20

+0

嗨Alaaeddin,谢谢你的回答。 “必须保留在最终产品中的功能”是能够执行完整的回发来加载选择行的细节(不再有问题)正如我在[编辑]中所说的,我已经修改了存储过程以获取按组排(例如每次10行)。 Unfortunatley,在我的情况下,分页不是一种选择,因为我需要将所有行都显示给输出。事实上,我的问题是关于在数据网格中的“以前的数据绑定项目”现在“追加”行。再次感谢你! – Alberto 2011-06-01 06:56:58