65.9K
CodeProject 正在变化。 阅读更多。
Home

与 ReturnOfTheSmartPart 一起使用的 ToolPartHelper

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (2投票s)

2007 年 10 月 23 日

CPOL

5分钟阅读

viewsIcon

30109

downloadIcon

91

该代码有助于使用 SmartPart 和 SharePoint 加速 toolpart 的开发。

引言

我使用 SmartPart 大约一年了,非常喜欢它。然而,我的大多数早期项目在性质上都非常相似,并且对 Toolpart 功能有一定的要求。我认为微软应该预先构建类似的东西(也许他们或其他人已经有了,只是我错过了)。由于我没有看到市面上有什么,所以我创建了这个 ToolpartHelper 库。而且,这基本上就是我将要讨论的全部内容。其他东西,如 Visual Studio、GridViewReturnOfTheSmartpart 的使用方法应该在别处查找。

您将需要

  • 已安装在服务器上的 SharePoint Services 3.0
  • SharePoint DLL
  • ReturnOfTheSmartPart
  • 拥有 Northwind 数据库的 SQL Server

下载代码的 zip 文件

  • Web 项目(Web 部件)
  • ToolPartHelper (Toolpart 类)
  • JScript 文件
  • 注意:我移除了 SharePoint 和 ReturnOfTheSmartPart 的 DLL。它们使 zip 文件过大。实际上,是 SharePoint DLL 非常大,SmartPart 很小,但您应该已经拥有它们了。

安装

  • 将 DLL 和 WebPart 放入正确的位置
    1. ToolpartHelper.dll 放入您的开发 GAC。
    2. ToolpartHelper.dll 放入您的开发服务器 GAC。
    3. 在您的 SharePoint Services 服务器的 web.config 的 "<assemblies>" 部分添加此行
    4. <add assembly="ToolpartHelper, Version=1.0.0.0, 
           Culture=neutral, PublicKeyToken=cd83bf6e90388ad4" />
  • 将 Jscript 文件 "ToolPartHelper.js" 放入 SharePoint 服务器上的正确位置
    1. 在下载的代码中,找到 "ToolPartHelper.js" 并将其放在:"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\"。
    2. 设置 Jscript 文件的权限(点击“高级”按钮)为“继承自父级”。只需通过删除然后勾选“继承”框来重新应用权限。点击“应用”。点击“确定”。
  • 如果您想查看已完成的 NorthWinds WebPart(来自下载的代码示例)
    1. 更改 "NorthWindData.ascx.vb" 中的 ASP.NET 代码的连接字符串,以找到您的本地 NorthWind 数据库。
    2. 将 "NorthWindData.ascx" 和 "NorthWindData.ascx.vb" 放入 SharePoint 服务器上的 SmartPart "UserControls" 目录。
    3. 使用 ReturnOfTheSmartPart 显示 "Is My Way Cool SmartPart"。

查看 WebPart 与 Toolpart 的实际运行

  • BindData 方法中使用 BaseMultipleSelect 属性(您可以在下载的代码中看到我的方法)会因为以下事实而变得复杂:
    1. 多选时未选择任何数据意味着 WebPart 上没有数据,只有一个消息。因此,我希望用户去 Toolpart 进行选择。
    2. BindData 代码例程由于上述原因以及 Select 语句使用了带有关键字 "IN" 或 "NOT IN" 的 "where" 子句而变得复杂。您可以在下载的代码中看到这一点,只需记住 SingleSelect 类更容易使用。
    3. 同样在代码中,我使用的示例事件代码展示了如何重新绑定以获取最新数据 - 稍后将对此进行更多介绍。

使用代码进行多选

实例化包括了这些重要点

  1. PropertyKey – 此参数和下面的参数都使用 String 标识符,使用 SmartPart 中的 "GetCustomProperty" 将信息存储到 SharePoint。这里存储的是一个逗号分隔的选择字符串以供检索。
  2. 注意:我选择逗号分隔是因为它易于放入 "where" 子句中。

  3. PropertyKeyAutoUpdate – 如果用户选择了 "全选/自动更新" 复选框,则返回 "true" 或 "false"。这直接关系到上面讨论的 "Where" 子句。
  4. DataTextFieldNameDataValueFieldName – 简单地将数据集连接到显示的复选框列表。显示值和实际值都将被存储。"DataValueFieldName" 是可选的。
  5. 注意:对于 Toolparts,"应用"、"确定" 或 "取消" 按钮将为 Toolpane 中 X 个 Toolparts 运行代码。对于多个 Toolparts,将"引发应用事件"。因此,我为每个类创建了本地事件。但有一个单独的类充当事件的单一消耗点(可以为所有"应用"、"确定"或"取消"按钮运行一次)。最终目的是避免尽可能多的重复绑定。
  6. 如果您只使用 "选择"(单个和/或多个)选项中的一个,那么它的 Rebind 事件就足够了。如果您至少不这样做,那么当用户点击一个按钮时,直到下次回发才能显示最新数据。
  7. 如果您有多个 "选择"(单个和/或多个)选项,那么为了避免为每个事件引发 Rebind,您可以使用我在这个示例项目中设置的配置。它只有一个 Rebind 事件,该事件会为所有引发的 "应用"、"确定" 和 "取消" 按钮事件而引发。
  8. JScript 功能 – 如果您打开 Toolpart,您应该会看到多选 Toolpart。您点击一个复选框,那么上面的文本数字就会在没有回发的情况下增加或减少。此外,"全选" 复选框会选中或取消选中所有项。注意:如果权限设置不正确,对话框上会出现日志。

关注点

  1. SingleSelectProperty 类 – 与多选版本类似,但更简单。返回一个值,您传递一个逗号分隔的字符串。
  2. SQLTextBoxString 类 - – 如果传入的值与某些字符匹配,则会向用户显示错误。这是因为它使用了简单的策略来对抗 SQL 注入。绝非完整。我的想法是,我宁愿做点什么也不愿什么都不做。
  3. SpacerClassForRebind 类 – 如上所述。

历史

将来,我将把代码放到 CodePlex 并提供源代码。我希望有人有更好的方法,或者代码能得到改进。谢谢,希望这对您有所帮助。

© . All rights reserved.