大家度过美好的一天......
我开发了一个dotnetnuke模块,我可能会丢失大量的数据,并且页面需要很长时间才能加载到浏览器中。 目前,在page_load期间,我只是从数据库中获取数据并将其用作数据源来填充数据网格。
我想要做的是逐步加载和显示页面内容,以便快速向用户显示页面,然后一次填充数据网格,增强用户体验。我正在尝试实现AJAX功能来实现这一点,但我很难搞清楚如何。
我今天早上开始看看,到现在为止我能够在dotnentnuke中做一些基本的ajax植入,但是我很难找到类似实现的教程,或者自己解决这个问题。
如果可以在不改变当前结构的情况下实现这一点,逐步获取数据并将行追加到DataGrid,那就没问题了,但是如果它会导致性能不佳,我宁愿改变所有内容并在另一个中执行方式。
另外,我认为AJAX是最佳选择,但如果应用程序能够从中受益,我可以评估实现不同解决方案的可能性。
提前谢谢你,
阿尔贝托
[编辑]
我已经部分解决了我的问题:
我更改了SQL存储过程,以便从特定索引“x”开始检索“n”行。
在asp:timer的每个循环中,我获取一组“n”行,并将下一个起始索引“x”保存到视图状态,以便准备好获取下一组行。
在这一点上,每个周期我都有一份完整的清单,我已准备好向用户显示。
这就是最后一个问题:是否可以将新行附加到已经存在的DataBound项目?
正如原帖中提到的,目前我正在使用asp:datagrid。将控件更改为显示数据没有问题,但是我无法找到任何具有“部分数据绑定”功能的控件的引用。
现在唯一明显的解决方案就是直接将每个控件添加到我的页面中,但对我而言似乎只是一个“优雅”的控件;此外,每行包含13个控件,这些控件放在我的数据网格中非常复杂的TemplateColumn中。
任何人都有更好的主意吗?
提前谢谢
[编辑2]
我越来越接近解决方案(实际上是两种可能的解决方案)
解决方案A. 通过更熟悉ajax和动态添加控件,我可以通过动态添加控件来“伪造”数据网格的数据显示。
解决方案B. 我现在正在测试的解决方案是
步骤1 - 将所有行数据绑定到数据网格,只包含很少一部分数据,以便拥有所有行,但却大大减少了加载时间。
第2步 - 在asyncpostbacks期间,我获取行组并填写其余数据。
当我有一些好的结果时,我会再次更新。
与此同时,我仍然接受建议和/或替代解决方案
Godd day!
答案 0 :(得分:0)
因为您评论的“此功能必须保留在最终产品中”我建议您使用两种解决方案:
首先是实施AJAX“请告诉我们你的问题究竟在哪里”
第二种解决方案就像是“我之前做过”的技巧
您不必每次都绑定所有数据,您可以通过为行级别或行编号添加新列来修改SQL过程,您可以使用ROW_NUMBER()来执行此操作。 现在让我们回到您模块中的网格,假设您的网格页面大小为10行, 在page.load事件中,在page.postback中,您绑定以下SQL命令的结果 “从Your_StoredProcedure_Or_View中选择-Columns-其中RowNumber在1到10之间”
如果page_load事件中的page.postback绑定了以下SQL命令的结果
“从Your_StoredProcedure_Or_View中选择-Columns-其中RowNumber在20到30之间”
- 如果页面(3)例如 -
并且您必须将当前页面存储在变量或查询字符串中。 它只是有效,