在DNN中,模块开发的SQL脚本一般都是以.SqlDataProvider为后缀名,并且都带有模块的版本号,

如此DNN在模块安装过程会自动识别模块现有的版本及其即将更新的版本并自动执行对应版本的SQL脚本,从而达到更新数据库的目的。然而苦恼的是在IDE中,比如Visual Studio(其中包括2003,2005,2008)都不能有效的显示SQL智能提示及其关键字高亮,平常择中的办法就是先把后缀名为.SqlDataProvider的SQL脚本文件修改为.sql,然后发布的时候在改回来,这样显得比较麻烦,其实我们可以修改一下注册表让Visual Studio支持.SqlDataProvider为后缀名的文件,其实很简单,就是需要你去注册表里边增加一注册项,
请按照下列步骤操作(Visual Studio 2008为例):
1. 单击“开始”,单击“运行”,在“打开”框中键入 regedit,然后单击“确定”。
2. 找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Languages\File Extensions\.sql
3. 单击“文件”,然后单击“导出”。
4. 在“文件名”框中,键入用于保存包含原始注册表项的 .reg 文件的文件名,(比如sql)然后单击“保存”。
5. 用记事本或其他文本编辑器打开sql.reg,并把.sql更改为. SqlDataProvider,另存为SqlDataProvider.reg
6. 双击SqlDataProvider.reg导入注册表即可
接下来你打开某一个模块Project,你会发现凡是. SqlDataProvider后缀的脚本都可以关键字高亮,这就是你想要的。:)
如何定制安装dnn,如何修改dnn配置文件以达到我们需求,如何预安装admin菜单及其相关权限等等,我想这些都是部署dnn所必须考虑的问题,在此我还推荐一篇文章详细说明如何定制自己的dnn安装过程...
Read the rest of entry »
在前边有两篇文章提起过如何修改dnn的某些控件以达到客户的需求,对此我似乎还意犹未尽,故此再贡献一下自己曾经改造的一个实例,希望大家对dnn有更深入的了解及其研究 ^_^
Read the rest of entry »
在前边一篇文章里简单说明了如何利用labelControl达到dnn的物尽其用, 如果感兴趣的话, 不妨看看,在此我继续上次的话题,稍微深入的了解一下UrlControl.我想做模块开发者都比较熟悉这一控件吧, 在上传文件(比如图象)或链接页面(外部或本站点页面)都可以直接使用这一控件, 可节省很多代码量及其工作量。今儿我就不在详细说明如何使用这一控件, 而是主要专注如何修改urlControl以达到我们的需要。
Read the rest of entry »
最近加班加点,终于在10天之内把客户这一网站给整出来,真是不容易啊,在此弄个截图以资鼓励我们团队的斗志, :)

只要你曾经使用过dnn或对此进行二次开发,也许是模块开发,也许是皮肤设计,也是修改核心等等, 你都会把发现其实dnn本身是有很多资源我们可以物尽所用的...
Read the rest of entry »
好久没写博客了,今天就此先推荐几篇文章算是自己的一些记录吧
1) 记得之前写过一篇如何定制自己的登陆或注册页面, 现在国外有一篇类似的文章,作者对此讲解得比较详细,如果需要深入了解的朋友,不妨去看看:
2) 记得之前有人问起如何更改FCK Editor默认的字体或样式, 你不妨看看这篇文章. 作者对此列举比较详细的步骤.
3) 在此强烈推荐这个工具类型模块, 它在开发及其测试环境下很用处, 也就是它允许你可以任意的切换用户,比如在你开发一个需要不同权限用户所对应的功能也不一样的模块来说,这是一个很简便的测试工具.
4) 如何动态编程管理模块, 不妨看看这篇文章, 作者对此详细描述如何利用DNN框架已有的方法来管理页面上的模块, 最后总结如下:
A)使用DotNetNuke.Entities.Modules可获取到一些辅助类,在管理模块给与你很多现成的方法(比如增加,删除,复制当前模块等等)
B)类ModuleInfo主要包含在特定页面某一个模块所有相关信息.
C)类ModuleController主要包含一些操作模块的API函数, 比如比如增加,删除,复制当前模块等等
D)你可以调用类ModuleController里边的AddModule()直接生成你所需要的任何模块.
E)你可以调用类ModuleController里边的CopyModule()复制你所需要的任何模块.
F)你可以调用类ModuleController里边的DeleteTabModule()删除某一页面存在的模块.
G)你可以调用类ModuleController里边的DeleteAllModules()删除所有页面存在的模块.

列举一些可能我们在开发DNN模块中需要的Utility,比如获取文件的绝对路径等等,有时我们在开发模块的过程中,不妨多去DNN核心代码里边查看,也许你想实现的方法本来DNN已径实现了,那就没有必要自己再重写一遍了,毕竟我们的项目都是在DNN核心架构上开发的,尽量利用原有的代码总是最佳捷径,推荐大家去看看...
Read the rest of entry »
DNN模块开发中,如果需要应用asp.net Ajax的话,你总得小心翼翼,比如在模块设置,web.config,再比如你是否还需要DNN默认自带的ClientAPI呢,请看DNN模块开发应用Ajax之Utility,里边会有一些技巧及其经验分享...
Read the rest of entry »
何谓IMC, IMC的全称是Inter Module Communication,它主要负责模块之间的通信,我们可以利用IMC在DNN模块开发中完成很多有用的功能,比如和第三方模块的交互等等....
Read the rest of entry »
因为DNN 4.6.2引入了接口IHydratable而让CBO更为强大,这让CBO真正成为王者之军,从而我们又可以重归CBO,这是为何,源头是什么呢?再谈一谈CBO...
Read the rest of entry »
在优化DNN的过程中我们可能注意到这一点, 就是我们的皮肤文件一般都写在同一个文件,可能是skin.css或container.css, 也就是说不论我们页面加载是否应用到该样式文件里边的所有属性,我们总会必须加载这样一个CSS样式文件,尽管皮肤有很多属性并不是我们所需要的,但有时我们所创建的皮肤可能会包含好些个类别的skin(也就是我们通常提到的主题theme), 比如专为首页显示的xx_Home.ascx, 专为管理页面的xx_admin.ascx, 一般的xx_skin.ascx等等, 显然这些页面可能是不同的布局设计, 不同的样式定义, 如果这些不同的样式都在一个skin.css里定义的话, 那肯定导致该文件冗赘, 并且不能达到不同的样式的目的(前提是你使用同样的class样式定义). 今天准备在此分享一个针对此类问题的解决方案, 简约而实用, 采用此方案将不会造成数据加载的不必要负荷, 提高页面的加载速度, 从而达到我们加速DNN的目的。
Read the rest of entry »