【问题标题】:Using code compiled for MOSS 2007 in 2010使用 2010 年为 MOSS 2007 编译的代码
【发布时间】:2010-08-04 23:14:13
【问题描述】:

我在通过 SharePoint Designer 部署的自定义页面中使用 SPGridView。现在在 2007 年一切正常,但在 2010 年,如果您尝试转到下一页,分页不起作用并导致错误,所以我的问题是;

使用为 2007 程序集编译的自定义代码时,SharePoint 是使用 2007 控件 (SPGridView) 还是执行某种重定向并尝试使用 2010 控件?这是我能想到的唯一可能导致问题的解释。

【问题讨论】:

  • 事实上,在进一步调查之后,我很确定我的代码被重定向到使用版本 14 控件。对于这种特殊情况,我可以覆盖它吗?

标签: sharepoint


【解决方案1】:

SPGridView 包含在 Microsoft.SharePoint.dll 程序集(Microsoft.SharePoint.WebControls 命名空间)中。

您的服务器上安装了哪个版本的 Microsoft.SharePoint.dll?如果您使用的是安装了 2010 的服务器,您应该阅读此MSDN post,了解如何在 2010 年重新部署为 2007 构建的自定义设置。

我强烈建议您不要尝试仅针对该控件使用不同版本的 SharePoint.dll,否则最终会一团糟。只需使用我链接到的文章构建您的 2010 年代码,您的分页应该可以正常工作。

【讨论】:

  • 服务器已升级到 SharePoint 2010。我已经为版本 14 程序集重新编译了我的项目并重新部署了它,但同样的问题仍然存在。
  • 那么你的代码应该使用 2010 SPGridView 而你不能真正让它使用 2007 的。您的 SPGridView 在您的开发环境中工作吗?你得到什么样的错误? javascript 错误或异常或其他什么?
  • 错误是; System.InvalidCastException:无法将“System.Int32”类型的对象转换为“System.String”类型。在 Microsoft.SharePoint.WebControls.SPGridView.set_PageIndex(Int32 值) 在 Microsoft.SharePoint.WebControls.SPGridViewPager.OnClickNext(EventArgs args) 在 Microsoft.SharePoint.WebControls.SPGridViewPager.RaisePostBackEvent(String eventArgument) 在 System.Web.UI.Page .RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint
  • 我注意到 2007 SPGridView 没有 PageIndex 属性,因此显然继承自 ASP.NET GridView 类。而 2010 SPGridView 确实有它自己的 PageIndex 属性。不确定这是否相关。
  • 嗯,你得到了那个错误,因为你正在使用字符串而不是 int 设置页码。在您的代码中查找类似 grid.PageIndex = "1";而不是 grid.PageIndex = 1;
【解决方案2】:

导致问题的是 DataKeyNames 属性。当我删除分页时,它按预期工作。

【讨论】:

    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多