您的位置:首页 > 数据库

【InfoPath应用场景:库存管理】在InfoPath Form Service利用WSS Web Service技术,通过VSTA代码把复杂表单写入SharePoint列表数据库的后继

2009-03-05 14:42 1341 查看
http://blog.lickies.cn/DocLib/[%20InfoPath应用场景:库存管理%20]%20在InfoPath%20Form%20Service利用WSS%20Web%20Service技术,通过VSTA代码把复杂表单写入SharePoint列表数据库%20(一).aspx

后继处理删除表单表单操作:

首先创建ConsoleApplication1项目

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Microsoft.SharePoint;

namespace Eallies.EventHandler.Register

{

public class Program

{

static void Main(string[] args)

{

SPSite site = new SPSite("http://fileserver/");

SPList list = site.OpenWeb("/Docs").Lists["修改建议文档"];

list.EventReceivers.Add(SPEventReceiverType.ItemDeleted, "Eallies.EventHandler.SP2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=24da4dca5bdd679d", "Eallies.EventHandler.SP2007.ListHandler");

list.EventReceivers.Add(SPEventReceiverType.ItemDeleting, "Eallies.EventHandler.SP2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=24da4dca5bdd679d", "Eallies.EventHandler.SP2007.ListHandler");

}

}

}

创建Eallies.EventHandler.SP2007项目

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Microsoft.SharePoint;

namespace Eallies.EventHandler.SP2007

{

public class ListHandler : SPItemEventReceiver

{

public static string szGlogal;

public override void ItemDeleting(SPItemEventProperties properties)

{

string NameField = properties.OpenWeb().Lists[properties.ListId].Fields.GetField("建议编号").InternalName;

string NameValue = properties.ListItem[NameField].ToString();

szGlogal = NameValue;

}

public override void ItemDeleted(SPItemEventProperties properties)

{

SPSite site = new SPSite("http://fileserver"/);

SPList list = site.OpenWeb("/Docs").Lists["修改建议数据"];

string QueryText = "<Where><Eq><FieldRef Name='" + list.Fields["建议编号"].InternalName + "'/><Value Type='Text'>"

+ szGlogal + "</Value></Eq></Where>";

SPQuery myQ = new SPQuery();

myQ.Query = QueryText;

SPListItemCollection items = list.GetItems(myQ);

int total = items.Count;

for (int i = total - 1; i >= 0; i--)

items.Delete(i);

}

}

}

ok, 特别指出最后循环一定要从大到小,时分关键,就是因为这个问题让我折腾了好久,慢慢理解其中理由.慢慢调试应该没问题.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐