DNN之模块建设PA包制作

对于DNN我是个新手,刚开始进入公司时候,给自己定位很高,总觉得问题很简单,很快就能做完。但是一旦问题出现在自己的身上时候,由于自己的要求太高,再加上主管不停地催促。

总是个自己施加更大的压力,反而很多很简单的问题,同样的问题出现很多次,越急越出错,越跟不上进度,越是手忙脚乱。久而久之对自己失去了自信心。

总结这几次出现的问题有几个方面:

1.时间无法显示,点击时间按钮无法显示。下面排序很乱(存储过程有问题(如图所示))

排序很乱(存储过程没有)(一般情况下出现这种问题就是我们加载时没有判断存储过程是否存在)

具体做法是:

添加时间按钮的链接:如图所示:

2.当数据库查询时间时候,时间为空如何判断的问题,默认的用GetNull(时间字段)

GetNull()
public override IDataReader GetAllByDescription(DateTime startdate, DateTime enddate, bool IsAdmin)
{
return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, GetFullyQualifiedName("GetAllByDescriptionttt"),
GetNull(startdate), GetNull(enddate), IsAdmin);
}

3.如果你的DNN有新的版本,装载时候,原来的那个版本没有卸载就会出现这样类似的问题。

4.当我们把DNN项目拷贝到DotNetNuke04.09.05版本时候(我们做项目一般先把项目拷贝到自己新建站点)

DeskTopModules下面,然后再将类库添加到AppCode里面,修改WebConfig配置文件

<codeSubDirectories>
<add directoryName="HTML" />
</codeSubDirectories>
  
  

 下面修改默认连接

ConnectionString连接修改
<connectionStrings>
<!-- Connection String for SQL Server 2005 Express
<add
name="SiteSqlServer"
connectionString="Data Source=.\SQLExpress;Integrated Security=True;
User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf;"
providerName="System.Data.SqlClient" />
-->
<!-- Connection String for SQL Server 2000/2005-->
<add name="SiteSqlServer" connectionString="Server=(local);Database=JobListTest;uid=sa;pwd=;"
  providerName="System.Data.SqlClient" />
</connectionStrings>

每新建一个版本模块时候,都要建立三个站点,现在已JobList为例

新建一个(源码站点)包含admin的Dnn站点,具体做法是解压一个DnnNuke4.9.5的模块然后取名为JobList,在vs2008上面新建打开网站(JobList的目录)添加就行了。

然后什么修改链接等等webConfig同上, 其次新建一个能够生成dll的站点(个人简称为Bin站点),具体做法是打开vs2008新建一个项目选择web应用程序项目,项目的名称要和你最后要打包要的dll文件名。然后添加一个测试站点和源码站点不同的是里面没有自己建的模块的源码,最好不要在源码站点装载自己打包好的PA,否则覆盖自己的源码还有在里面的bing目录里多一个dll.建立这三个站点的好处就是源码站点便于测试,Bin站点(里面的代码要和源码保持一致,便于后期升级维护)注意当resources源码文件复制进去了以后要将项目文件转换为web应用程序

用于将desgin.cs页面的所有控件都加在design里面去,源码文件的所有控件源码的CodeBehind改成CodeFile。

当我们写好存储过程后,一定要在页面Host的SQL执行对了才行。

而且要判断该存储过程是否存在,如果存在就先卸载删除该存储过程,否则就直接创建该存储过程。

语句如下:

存储过程
if exists (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}[{objectQualifier}AddHtmlText]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure {databaseOwner}[{objectQualifier}AddHtmlText]
GO

CREATE PROCEDURE {databaseOwner}[{objectQualifier}AddHtmlText]

@字段一 ...

as

select ...

GO
  

 

 

一个非常重要的就是模块模糊查询时候自己定义的 @变量名一定要默认的给定一个长度,否则会出现很多问题(每次查询的时候全都查询出来)
 
在02.00.04SqlDateaProvider更改存储过程(如上)和在Uninstall.SqlDataProvider中添加如代码:

DROP PROCEDURE {databaseOwner}[{objectQualifier}AddHtmlText]
GO

原文地址:https://www.cnblogs.com/lhws/p/1750324.html