Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 我可以使用Visual Studio在SharePoint中循环列表吗?_Visual Studio_Sharepoint_Loops_Sharepoint 2010_Workflow - Fatal编程技术网

Visual studio 我可以使用Visual Studio在SharePoint中循环列表吗?

Visual studio 我可以使用Visual Studio在SharePoint中循环列表吗?,visual-studio,sharepoint,loops,sharepoint-2010,workflow,Visual Studio,Sharepoint,Loops,Sharepoint 2010,Workflow,(使用SharePoint 2010) 嗨,伙计们,我会尽力提供足够的背景来让这一切变得有意义 基本上我们有一个客户名单,上面有他们的电话号码和其他信息。此列表按过期日期排序。我们有电话销售人员给名单上的客户打电话。到目前为止,我们只有一个电话销售员给名单上的客户打电话,这没有问题。不过,现在我们希望名单中有两个tm的呼叫客户,将来可能还会有更多。当然,问题是我们不希望他们在同一时间给同一个客户打电话 我们可以通过将tm分配给列表中的每个客户来解决这个问题,然后他们只看到分配给他们的客户。但由于

(使用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中打开它并对其运行脚本。但是,有没有一种方法可以在VisualStudio中编程一个工作流(或其他东西)来循环浏览列表并执行此操作?我需要向它提供一个数字,表示有多少tm将呼叫,然后它将循环浏览客户列表,并以上面指定的方式分配tm


如果你能想出更好的方法,我也愿意接受其他的想法。提前谢谢

您完全可以循环浏览列表中的项目。下面是一个可以实现此目的的方法的示例:

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();
} 
string[]tms=新字符串[]{“TM1”、“TM2”、“TM3”};
SPList list=SPContext.Current.Web.Lists[“我的列表”];
SPListItemCollection items=list.items;
对于(int i=0;i

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

您完全可以循环列表中的项目。下面是一个可以实现此目的的方法的示例:

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();
} 
string[]tms=新字符串[]{“TM1”、“TM2”、“TM3”};
SPList list=SPContext.Current.Web.Lists[“我的列表”];
SPListItemCollection items=list.items;
对于(int i=0;i

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

真棒的负鼠,凯尔!我对SharePoint开发完全是新手,我还没有为SharePoint编写过一行代码。我喜欢你的想法,将这种代码添加到只有管理员才能访问的web部件中,这将非常有效!visual studio是否有内置模块来为SP构建web部件?如果是这样的话,你有什么可以推荐的资源吗?还是干脆把VisualStudio烧了试试?非常感谢!您熟悉在ASP.NET中创建用户控件吗?如果是这样,您就知道构建Web部件所需的一切。在Visual Studio中创建新的Visual Web部件。更多信息请参见此处:已经有一段时间了,但我想我可以解决它,谢谢链接!最后一个想法是,我在想,是否有可能对一个连接到列表的Web部件进行编码,该列表经过筛选,仅显示未分配给任何人的呼叫,然后仅获取该列表上的第一项并将其分配给当前用户?这样,呼叫者只需进入一个包含该web部件的页面,它就会抓取在调用列表中找到的第一个项目,并将其分配给当前呼叫者。这样,就不会有两个呼叫者获得相同的客户记录,也就不需要每天分配所有的记录了。您可以使用CAML查询()、Linq to SharePoint()或Linq to Objects(在
SPList.items
上调用
.Cast()
来筛选列表项。注意:这可能会导致性能问题,特别是在非常大的列表上)。如果您对筛选列表项有更具体的问题,请问另一个问题。真棒的负鼠,Kyle!我对SharePoint开发完全是新手,我还没有为SharePoint编写过一行代码。我喜欢你的想法,将这种代码添加到只有管理员才能访问的web部件中,这将非常有效!visual studio是否有内置模块来为SP构建web部件?如果是这样的话,你有什么可以推荐的资源吗?还是干脆把VisualStudio烧了试试?非常感谢!您熟悉在ASP.NET中创建用户控件吗?如果是这样,您就知道构建Web部件所需的一切。在Visual Studio中创建新的Visual Web部件。更多信息请参见此处:已经有一段时间了,但我想我可以解决它,谢谢链接!最后一个想法是,我在想,是否有可能编写一个连接到一个列表的Web部件,该列表只过滤到sho