SharePoint 调查列表的自定义错误页面
场景:
使用SharePoint的调查列表做调查问卷的时候,我们经常要设置成不允许多次答复,这样的话每个人就只能答复一次。
问题:
可是这样会产生一个问题,就是如果一个人第二次答复的话,那么出现的错误提示页面(如下图)不是很友好。
尝试的解决方案:
如果熟悉SharePoint 2010的开发的话,那么可定会想到Event Handler这个解决方案。因为在2010中,可是实现使用Event Handler实现自定义错误页面。有了这个方案,那么接下来就是一些细节性的问题了。
1.首先查询当前用户是否在列表中回复过帖子;
2.如果回复过,那么就跳到自定义页面。
代码:
public override void ItemAdding(SPItemEventProperties properties) { SPList currentList = properties.List; SPQuery query = new SPQuery(); query.Query = "<Where><Eq><FieldRef Name='Author'/><Value Type='Integer'><UserID Type='Integer'/></Value></Eq></Where>"; SPListItemCollection items = currentList.GetItems(query); if (items.Count == 1) { properties.Cancel = true; properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl; properties.RedirectUrl = "/_Layouts/MyEventError.aspx"; } }
疑问:
当你代码完成后,并且成功部署,去没有结果。也就是说如果重复答复调查,依然会跳到默认的错误页面。问题出现在哪里?个人猜测是默认错误页面实现机理和Event Handler不一样,通俗一点就是:他们不是一个道上的。怎么办?难道没有办法了。有,但只能说是Workaround, 不是真正的解决方案。
解决方案:
首先把调查列表设置成“允许多次答复”,然后激活你的Event Handler的feature。ok,自定义的错误页面实现了。
为什么说是一种折中的方案呢?因为错误页面发生在用户完成调查的表单,并且提交表单的过程中,而不是发生在用户点击“答复此调查”的过程中。
努力不一定成功,但放弃一定失败!
http://www.cnblogs.com/fanwenxuan/archive/2010/09/18/1830320.html
Powered By D&J (URL:http://www.cnblogs.com/Areas/)