无法在自定义列表表单(新项目)上显示Web部件错误

时间:2011-11-22 16:20:40

标签: custom-controls wss-3.0

我会抓住机会在这里提问,因为我找不到这个问题的根本原因。

我正在使用SPD 2007在WSS 3.0网站上工作,而且我对Sharepoint开发一般都是新手。

我正在自定义DispForm.aspx页面。该页面是一个简单的编辑页面,但最后,我添加了一个自定义列表表单Web部件,用于添加注释(存储在另一个列表中)和下面,一个数据视图,用于查看与DispForm.aspx显示的项目相关的注释页。

我想做的事情类似于此页面上显示的功能,我从中激发了自己的灵感,您实际上可以将我的评论视为最新评论: http://sharepoint.microsoft.com/blogs/GetThePoint/Lists/Posts/Post.aspx?ID=209

一切正常,直到我删除了我作为测试所做的所有评论。现在我从自定义列表表单中得到的是“#34;无法显示此Web部件错误"。

我已经看过日志了,我明白它在抱怨什么,但我不知道如何修复它,甚至不知道为什么会出现这样的错误。

SPDataSourceView.ExecuteSelect() - selectArguments: IsEmpty=True, MaximumRows=0, RetrieveTotalRowCount=False, SortExpression=, StartRowIndex=0, TotalRowCount=-1
Error while executing web part: System.InvalidOperationException: Unable to open the specified list item. ---> 
System.ArgumentException: **Value does not fall within the expected range**.     
at Microsoft.SharePoint.SPList.**GetItemById**(Int32 id, String strRootFolder, Boolean cacheRowsetAndId)     
at Microsoft.SharePoint.SPList.GetItemById(Int32 id)     
at Microsoft.SharePoint.WebControls.SPDataSourceView.ExecuteSelect(DataSourceSelectArguments selectArguments)     --- End of inner exception stack trace ---     
at Microsoft.SharePoint.WebControls.SPDataSourceView.ExecuteSelect(DataSourceSelectArguments selectArguments)     
at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)     
at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigatorInternal()     
at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigator()     
at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigator(IDataSource datasource, Boolean originalData)     
at Microsoft.SharePoint.WebPartPages.DataFormWebPart.GetXPathNavigator(String viewPath)     
at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform()
InnerException 1: System.ArgumentException: Value does not fall within the expected range.     
at Microsoft.SharePoint.SPList.GetItemById(Int32 id, String strRootFolder, Boolean cacheRowsetAndId)     
at Microsoft.SharePoint.SPList.GetItemById(Int32 id)     
at Microsoft.SharePoint.WebControls.SPDataSourceView.ExecuteSelect(DataSourceSelectArguments selectArguments)

我们正在谈论一个"新项目"形式,所以我不明白为什么我在GetItemById上收到错误。它想要获得什么以及如何解决它?

最后,我还没有改变SPD创建的CAML查询。我确实更改了评论列表,例如重命名或删除未使用的列,但我不认为这是问题的原因,因为删除自定义列表表单并重新创建它并没有解决问题。

关于我应该在哪里或看什么的任何线索?我完全没有想法。

感谢。

1 个答案:

答案 0 :(得分:1)

  1. 在Sharepoint Designer中,打开将“评论”自定义列表表单插入的DispForm。
  2. 在“代码”视图中,找到列表的DataFormWebPart。
  3. 找到第<SharePoint:SPDataSource runat="server" DataSourceMode="ListItem"行并将 DataSourceMode 更改为DataSourceMode="List"
  4. ParameterBindings 内,找到<ParameterBinding Name="ListItemId".....并将其更改为<ParameterBinding Name="ListItemId" Location="None" DefaultValue="0"/>