基于Sharepoint 2010 建立BCS的错误总结
错误1
实现BCS时,进入部署的站点无法显示组件,网页提示的错误如下:
无法显示该 Web 部件。若要解决该问题,请在与 Microsoft SharePoint Foundation 兼容的 HTML 编辑器(例如 Microsoft SharePoint Designer)中打开该网页。如果问题持续存在,请与 Web 服务器管理员联系。
这个错误导致的原因一般出在ReadList()函数中,有可能是将Object转化为对应类型是出现错误(这个错误没有语法错误,编译也没有错误),如Convert.ToInt32(object.ToString)将很有可能导致这种错误的发生,改成Convert.ToInt32(object)就可以消除错误。
或许有其他可能导致这种错误的发生,但是目前还没有找到,如果实在不行可以重新做一遍,有时花费的时间比找到错误并解决要来的快的多。
错误2
部署完后进入站点提示,说ReadList中发现意外之类的错误,这个时候出现错误的原因很有可能就是,在读数据库的时候字段名写错了,可以通过各种方式找到错误的字段名,建议使用单步调试。
错误3
部署BCS组件的时候,提示错误如下:
TypeDescriptor with Name 'Id' has a type 'System.Guid' that is not compatible with the type 'System.String' of the referenced Identifier 'ProgramId'. A TypeDescriptor referencing an Identifier should have a TypeName that is one of the following: primitive type, GUID, Nullable form of a primitive type, or Nullable form of GUID
导致这种原因的问题是,网站点中的格式没有程序中对应的格式,如GUID就是其中网站中不支持的格式,这个时候将程序中的格式改一下就可以,主要是改成程序中方便的格式,而站点中又有的格式。
错误4
成功将BCS组件部署到站点同时也能正常显示的时候,但是点击编辑项目出现一下提示:
无法显示该 Web 部件。若要解决该问题,请在与 Microsoft SharePoint Foundation 兼容的 HTML 编辑器(例如 Microsoft SharePoint Designer)中打开该网页。如果问题持续存在,请与 Web 服务器管理员联系。
出现这种错误的原因是ReadItem()方法中的Identity中的Id没有写对,如qualityConfigData1.ProgramId = qualityConfigData1.ProgramId;这一句从语法中并没有错误,但是仔细观察可以发现,这种错误是粗心导致的,只要将等号右边的1改为2就可以解决问题。
注意:如果点击编辑项目的时候有些栏目有数据,但是就是没有显示出来,也是出现在这个方法中,原因也是粗心导致的,要么是写错了,要么是漏写了。
错误5
在数据库中添加了一行数据,但是进入站点刷新的时候并没有更新,依然是原来的那些数据。
原因是:与设置属性无关,和自己书写的代码逻辑有关系,这个时候需要仔细推敲一下自己书写的代码。
错误6
原因是Update方法中的id属性中的PreUpdateField没有设置为true
错误7
建立BCS项目是,当把更新和删除方法都建立好后,这个时候正兴致勃勃的去完成Create方法,可是无论怎么弄都出现了运行是错误,如图所示
无论如何尝试都没有办法解决这个问题,网上的各种说法我都试过了但是就是没有用。
http://www.itidea.nl/index.php/tag/bcs/
http://www.chakkaradeep.com/post/Building-a-BDC-Model-using-the-NET-Assembly-Connector.aspx
以上是几个参考网站。
我的解决方案:我尝试着新建了一个项目,然后只是添加一个create方法,方法里面的代码也是默认的,成功部署后进入了新建项目的界面。
于是感觉这东西和代码实现没有关系,正因为这样我就更加迷惑了,因为这样我就没有办法找到错误的根源所在。想来想去,还是从头再来比较好,可是删除了该删的东西代码也写好了,可是错误依然没有解决。一次偶然的机会,我发现新建项目有效,但是Update方法无效了。
这是件让人头疼的问题,实在找不到原因了我有重来了,可是富有戏剧性的事情发生了,错误恢复到最初状态了,根据自己找的资料和经验,怎么也没有想明白为什么,只想可能没有删除干净,于是有把该删除的都删除了,并且重新启动电脑。
接着又是从头开始了,但是这次我只是弄了一下Create方法,经过努力后,这玩意儿有效了,于是接着弄了一下Update方法和Delete方法,结果和预料中的一样,Update方法无效,出现了运行时错误。
根据前面无数次试验的经验,这个时候我进入sharepoint designer ,进入相应的站点并且进入对应的外部列表观察,发现少了一个EditForm.aspx页面,于是手动添加了一个,就这样我的问题解决了。
注意:开始Create方法失败后,我进入位置添加NewForm.aspx页面时总会报错误,至于为什么我就不清楚了。
错误7后记:经过上面的艰辛路程后,于是就接续操作其他已经建立好Update方法的BCS外部列表,但是我没有从头来,我只是在原有基础上添加了Create方法,虽然部署后依然出现了上述问题,但是进入sharepoint designer可以成功添加EditForm.aspx页面了(这个和注意中的内容相左),所以就很简单的完成了上述同样功能的任务。
Sharepoint 2010中几个函数的说明
Update() 函数对应的是编辑项目的功能,如果没有改方法,站点中的编辑项目将处于灰色状态。
Delete()函数对应的是站点中的删除项目的功能。
Create()函数对应的是站点中的新建项目,如果没有该方法,在项目中的新建项目的图标处于灰色状态,只有添加的该方法后,列表的新建项目功能才有用。
个人建议:关于这几个方法的建立:个人建议先建立Create()方法,在建立Update()和Delete()方法。
本文来自:TowerKing随笔汇总集