[SharePoint2007]使用自定义数据库的几个问题
MOSS2007中提供了显示、新增、编辑、删除自定义数据库的功能。
显示和删除功能都很容易实现,我在做的过程中没有遇到什么难题,所以就不写了。
先说说编辑吧:
我在Designer中添加了一个“项目表单”来完成编辑功能。
1、我使用的数据库是SQL Server 2005,一开始做编辑功能的时候,MOSS总是提示“数据控件没有执行操作(大体是这个意思)”,无法将编辑结果保存到数据库中。后来经过一项一项的排除才发现,原来是我将数据表的主键也放到了“项目表单”中,所以MOSS才会报错。
2、将主键去掉后,MOSS不报错了,但又出现了一个新的问题,编辑的结果无法保存到数据库中,这又是为什么呢?
经过检查,发现如果某个字段的值是null或者空字符串,那么“项目表单”就不会将编辑结果保存到数据库中。因此,如果要使用“项目表单”做编辑,那么要保证数据库中各个字段的默认值不为null或空字符串。
再说说新增:
使用Designer在页面中添加一个“新建项目表单”可以很容易的实现新增功能。我这里要说的是如何将其他表中的数据作为新增内容保存到当前做新增功能的数据表中。具体步骤如下:
1、在Designer中插入一个“新建项目表单”:
![新建项目表单](/images/cnblogs_com/ericzhen/2.JPG)
“新建项目表单”中所有的输入项目都是文本框,这里我们需要将SupplierID对应的输入项目换成下拉列表,其中绑定的是另外一张数据表的数据;
2、在SupplierID对应的文本框中,插入一个下拉列表,然后将另一张数据表绑定到这个下拉列表中;
![](/images/cnblogs_com/ericzhen/2007083002.JPG)
数据绑定的方法请参考SharePoint Designer的帮助,里面有很详细的教程;
3、在Designer中找到SupplierID对应的文本框的代码:
<asp:TextBox runat="server" id="ff1{$Pos}" __designer:bind="{ddwrt:DataBind('i',concat('ff1',$Pos),'Text','TextChanged','SysID',ddwrt:EscapeDelims(string(@SysID)),'@SupplierID')}" />
<asp:DropDownList runat="server" id="DropDownList1" DataTextField="SupplierName" DataSourceID="SqlDataSourceSupplier0830" DataValueField="SysID" />
<asp:SqlDataSource runat="server" ID="SqlDataSourceSupplier0830" ConnectionString="Data Source=rjdfmis\htsql2005;Initial Catalog=WZMis;Persist Security Info=True;User ID=sa;Password=htsql2005" ProviderName="System.Data.SqlClient" SelectCommand="SELECT [SysID], [SupplierName] FROM [Supplier]" />
用TextBox的id和__designer:bind相关的代码覆盖DropDownList的id的内容,然后删除TextBox;
<asp:DropDownList runat="server" id="ff1{$Pos}" __designer:bind="{ddwrt:DataBind('i',concat('ff1',$Pos),'Text','TextChanged','SysID',ddwrt:EscapeDelims(string(@SysID)),'@SupplierID')}" DataTextField="SupplierName" DataSourceID="SqlDataSourceSupplier0830" DataValueField="SysID" />
4、保存,然后在ie中打开这个页面;
![](/images/cnblogs_com/ericzhen/2007083003.JPG)
在下拉列表中选择Supplier,然后就可以将对应的SupplierID保存到数据库中了。
显示和删除功能都很容易实现,我在做的过程中没有遇到什么难题,所以就不写了。
先说说编辑吧:
我在Designer中添加了一个“项目表单”来完成编辑功能。
1、我使用的数据库是SQL Server 2005,一开始做编辑功能的时候,MOSS总是提示“数据控件没有执行操作(大体是这个意思)”,无法将编辑结果保存到数据库中。后来经过一项一项的排除才发现,原来是我将数据表的主键也放到了“项目表单”中,所以MOSS才会报错。
2、将主键去掉后,MOSS不报错了,但又出现了一个新的问题,编辑的结果无法保存到数据库中,这又是为什么呢?
经过检查,发现如果某个字段的值是null或者空字符串,那么“项目表单”就不会将编辑结果保存到数据库中。因此,如果要使用“项目表单”做编辑,那么要保证数据库中各个字段的默认值不为null或空字符串。
再说说新增:
使用Designer在页面中添加一个“新建项目表单”可以很容易的实现新增功能。我这里要说的是如何将其他表中的数据作为新增内容保存到当前做新增功能的数据表中。具体步骤如下:
1、在Designer中插入一个“新建项目表单”:
“新建项目表单”中所有的输入项目都是文本框,这里我们需要将SupplierID对应的输入项目换成下拉列表,其中绑定的是另外一张数据表的数据;
2、在SupplierID对应的文本框中,插入一个下拉列表,然后将另一张数据表绑定到这个下拉列表中;
数据绑定的方法请参考SharePoint Designer的帮助,里面有很详细的教程;
3、在Designer中找到SupplierID对应的文本框的代码:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
用TextBox的id和__designer:bind相关的代码覆盖DropDownList的id的内容,然后删除TextBox;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
4、保存,然后在ie中打开这个页面;
在下拉列表中选择Supplier,然后就可以将对应的SupplierID保存到数据库中了。