【问题标题】:Can I loop a list in SharePoint with Visual Studio?我可以使用 Visual Studio 在 SharePoint 中循环列表吗?
【发布时间】:2011-03-16 00:51:30
【问题描述】:

(使用 SharePoint 2010)

大家好,我会尽量提供足够的背景说明。

基本上,我们有一个客户列表,其中包含他们的电话号码和其他信息。此列表按过期日期排序。我们有电话推销员给这个列表中的客户打电话。到目前为止,我们只有一位电话推销员给列表中的客户打电话,这没有任何问题。但是,现在我们希望列表中有两个 tm 的呼叫客户,并且将来可能更多。当然,问题是我们不希望他们同时给相同的客户打电话。

我们可以通过将 tm 分配给列表中的每个客户来解决此问题,然后他们只能看到分配给他们的客户。但由于我们想按特定顺序调用它们,我们也希望按顺序分配 tm,例如:

假设我们有 3 个 tm 的调用。理想情况下,该列表如下所示(TM1、2 和 3 是分配给该客户的 tm):

  • 客户#1 - TM1
  • 客户#2 - TM2
  • 客户#3 - TM3
  • 客户#4 - TM1
  • 客户#5 - TM2
  • 客户#6 - TM3
  • 客户#7 - TM1
  • 客户#8 - TM2 ...等等。

现在的诀窍是,有时我们可能有 1 个 tm 调用,或 3 个 tm 调用。因此,每天早上在他们开始之前,tm 管理员必须将呼叫分配给不同的 tm。当列表中有 1000 多个客户时,这会变得很棘手。当然,我们可以将列表切换到数据视图,然后从 Excel 工作表中复制和粘贴值来进行分配。或者我们可以在 Access 中打开它并针对它运行一个脚本。但是有没有办法我可以在 Visual Studio 中编写一个工作流(或其他东西)来为我循环遍历列表并执行此操作?我需要向它提供一个数字,表示将调用多少个 tm,然后它会遍历客户列表并以上面指定的方式分配 tm。

如果您能想到更好的方法来做到这一点,我也愿意接受其他想法。提前致谢!

【问题讨论】:

标签: visual-studio sharepoint loops sharepoint-2010 workflow


【解决方案1】:

您绝对可以遍历列表中的项目。这是您可以做到的一种方式的示例:

string[] tms = new string[] { "TM1", "TM2", "TM3" };

SPList list = SPContext.Current.Web.Lists["My List"];
SPListItemCollection items = list.Items;

for (int i = 0; i < items.Count; i++)
{
    SPListItem item = items[i];
    item["AssignedTM"] = tms[i % tms.Length];

    item.Update();
} 

剩下的唯一问题是如何执行这段代码。您可以将其放在控制台应用程序中并在服务器上运行(不推荐),或者您可以将其放在 webpart 中,将其粘贴在页面上,授予管理员对页面的访问权限(可能带有随附的表单),并且让(他/她)每天(或在数据更改时)执行它。

【讨论】:

  • 很棒的负鼠,凯尔!我对 SharePoint 开发人员完全陌生,我实际上没有为 SharePoint 编写任何代码。我喜欢您将这种代码添加到只有管理员才能访问的 Web 部件的想法,这将非常完美! Visual Studio 是否有内置模块来为 SP 构建 Web 部件?如果是这样,您对我可以开始使用的资源有什么建议吗?或者只是解雇 Visual Studio 并尝试一下?非常感谢!
  • 您熟悉在原版 ASP.NET 中创建用户控件吗?如果是这样,您就知道构建 Web 部件所需的一切。在 Visual Studio 中创建一个新的 Visual Web 部件。请参阅此处了解更多信息:msdn.microsoft.com/en-us/library/ff597539.aspx
  • 已经有一段时间了,但我想我可以解决它,谢谢你的链接!
  • 最后一个想法,我在想是否可以编写一个连接到一个列表的 Web 部件,该列表被过滤为只显示未分配给任何人的呼叫,然后只抓取该列表中的第一项并分配给当前用户?这样,调用者可以直接转到带有该 Web 部件的页面,它会抓取它可以在调用列表中找到的第一个项目并将其分配给当前调用者。这样,没有两个呼叫者会得到相同的客户记录,也不需要每天分配所有记录。
  • 当然。您可以使用 CAML 查询 (a2zdotnet.com/View.aspx?id=90)、Linq to SharePoint (msdn.microsoft.com/en-us/library/ee535491.aspx) 或 Linq to Objects(在 SPList.Items 上调用 .Cast&lt;SPListItem&gt;()。注意:这可能会导致性能问题,尤其是在非常大的列表)如果您对过滤列表项有更具体的问题,请提出其他问题。
猜你喜欢
  • 1970-01-01
  • 2019-06-05
  • 2020-02-28
  • 2011-10-04
  • 2011-04-14
  • 2022-01-05
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
相关资源
最近更新 更多