如何在DNN创建类IGoogle效果的模块

上传人:平*** 文档编号:14504595 上传时间:2017-10-31 格式:DOCX 页数:4 大小:21.25KB
返回 下载 相关 举报
如何在DNN创建类IGoogle效果的模块_第1页
第1页 / 共4页
如何在DNN创建类IGoogle效果的模块_第2页
第2页 / 共4页
如何在DNN创建类IGoogle效果的模块_第3页
第3页 / 共4页
如何在DNN创建类IGoogle效果的模块_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《如何在DNN创建类IGoogle效果的模块》由会员分享,可在线阅读,更多相关《如何在DNN创建类IGoogle效果的模块(4页珍藏版)》请在金锄头文库上搜索。

1、如何在 DNN创建类 IGoogle效果的模块上一篇 / 下一篇 2008-08-05 14:24:18 / 个人分类:Dotnetnuke 查看( 264 ) / 评论( 3 ) / 评分( 10 / 0 ) 如果你开发过 DNN模 块,你应该知道 DNN每个模块都存在一个模块设置,在此你可以设置某一模块实例的相关信息,比如:模块名称,模块权限,模块容器皮肤等等。而有时你如果想 扩展模块设置,增加自己的设置项,那你可以继承ModuleSettingsBase,该基类主要存在两个方法 LoadSettings和 UpdateSettings:1. 2. LoadSettings loads t

2、he settings from the Database and displays them 3. 4. Public Overrides Sub LoadSettings() 5. get the module setting 6. End Sub 7. 8. 9. UpdateSettings saves the modified settings to the Database 10. 11.Public Overrides Sub UpdateSettings() 12. Try 13. Dim objModules As New DotNetNuke.Entities.Module

3、s.ModuleController 14. 15. Update Module Settings 16. objModules.UpdateModuleSetting(ModuleId, surveyclosingdate, DotNetNuke.Common.Globals.DateToString(datClosingDate)17. 18. Catch exc As Exception Module failed to load 19. ProcessModuleLoadException(Me, exc) 20. End Try 21.End Sub 我 想这对于 DNN模块开发是比

4、较方便,可是我偏偏对此极为抵触,觉得有时也许仅仅只有 13 个设置项,可每次都得跳转到模块设置页面里边,更新完毕又跳转回 来,又得重新加载页面所有东西,值得么?不就更新几个值么?如此煞费心思,对比 IGoogle的模块,都是 Ajax方式更新,根本不需要每次都到后台设 置。静下来琢磨一下,其实在 DNN似乎也可以做到,只要借助一下 UpdatePanel,而 DNN核心 API已对 UpdatePanel封装起来,只要合 理利用即可,该封装类为DotNetNuke.Framework.AJAX,下边不妨看看如何在 DNN实现类 IGoogle模块的效果:1)在 Page_Init事件里封装 U

5、pdatePanel,pnlLatest 为目标容器,该容器里的即为你需要 Ajax更新的数据列表等。1. Private Sub WrapUpdatePanel() 2. If AJAX.IsInstalled Then 3. AJAX.RegisterScriptManager() 4. AJAX.WrapUpdatePanelControl(pnlLatest, False) 5. End If 6. End Sub 2)页面脚本处理,其中需要注意的是 onInvoke和 onComplete这两个函数,onInvoke负责提交数据到服务器,而 onComplete将在数据返回客户端,完

6、成更新后激发。1. 2. var Module_Container; 3. function initContainerID() 4. if ( typeof(Module_Container) = undefined) Module_Container = dnn.getVar(Container_ID); 5. 6. 7. Sys.Net.WebRequestManager.add_invokingRequest(onInvoke); 8. Sys.Net.WebRequestManager.add_completedRequest(onComplete); 9. 10.function

7、onInvoke(sender, args) 11. initContainerID(); 12. $get(Module_Container + lstContent).style.display = none; 13. $get(updateProgress).style.display = ; 14. 15. 16.function onComplete(sender, args) 17. initContainerID(); 18. $get(Module_Container + lstContent).style.display = none; 19. $get(updateProg

8、ress).style.display = none; 20. 21. 22. 23. 24. 25. 26.On updating the entries list, plaese waiting for . 27. 3)更新模块设置:1. Private Sub btnUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpdate.Click 2. RecentEntriesMax = Convert.ToInt32(ddlEntriesMax.SelectedValue) 3. Dim

9、 objModules As New ModuleController 4. objModules.UpdateModuleSetting(ModuleId, LatestEntriesMax, RecentEntriesMax) 5. objModules.UpdateModuleSetting(ModuleId, ContentLength, txtLengthMax.Text) 6. 7. ReBind the data list 8. BindEntriesList() 9. End Sub 解 析:从这可看出,最终还得需要 UpdateModuleSetting来实现我们的功能,只不

10、过是借助了 Ajax来更新吧。也就是当点击按钮 btnUpdate 提交数据时将会触发 onInvoke脚本实现了 Ajax方式的更新(原因就是更新操作已被封装在UpdatePanel),在此我们没 有详细讲述 Sys.Net.WebRequestManager的原理机制:1. Sys.Net.WebRequestManager.add_invokingRequest(onInvoke); 2. Sys.Net.WebRequestManager.add_completedRequest(onComplete); 如果有兴趣可以看看官方文档。4)以上更新过程还得需要一辅助脚本 dnn.js,故

11、切记在 Page_Load里添加该命名空间的注册:1. ClientAPI.RegisterClientVariable(Me.Page, Container_ID, Me.ClientID + _, True) 2. Requires at a bare minimum the dnn namespace, 3. so we need to register it regardless of wheter the ClientAPI is disabled or not 4. ClientAPI.RegisterClientReference(Me.Page, ClientAPI.Clien

12、tNamespaceReferences.dnn) 进阶应用:其实你还可以控制设置项何时出现,比如一般在编辑状态才出现,否则自动隐藏。这一功能可用不同方法实现,在此我还是发扬“物进所用”精神,借助DNN的 Personalization机制来控制控制设置项的呈现。1. Dim Mode As String = CType(DotNetNuke.Services.Personalization.Personalization.GetProfile(Usability, UserMode & Me.PortalSettings.PortalId.ToString), String) 2. TODO

13、 ( due to the Hard-Code snippet) 3. If Mode = Edit Then 4. Show the setting controls 5. tblSettings.Visible = True 6. btnUpdate.Visible = True 7. End If 关于 Personalization服务,这是一个 DNN极其有用的核心机制,也许以后文章会有所涉及,先不妨看看下边链接,相信你会有所收获:Lets Talk DotNetNuke User PersonalizationModule Settings and Personalization: Easily Store Data For Your DotNetNuke?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号