前面的两篇,讲了如何创建 修改一个list item.但是在这些item中,我们都只是使用了简单的Text类型的Field,如果我们使用一些相对复杂的Field,改怎么做,例如HyperLink 和User Type的column.
先讲HyperLink type的Field.如果先前有使用过Object Model去读取一个Hyperlink Type的Field,就会发现,如果用ToString(),就会得到一个"url,description"格式的字符串.所以,这也是我们在XML要用到的格式.
string strBatch = @"<Method ID='1' Cmd='New'>
<Field Name='Title'>Sample Title</Field>
<Field Name='Url'>http://www.microsoft.com, Microsoft Site</Field>
</Method>";
使用User Type的Field就稍微麻烦一点.如果你看过Object Model读取的User Field的值,就会发现是一串值就像"ID;#domain\\account....",但是在web service中,没有那么麻烦 只要"ID;domian\\account",所以,我们要先得到ID值,因此我们要用到另外一个Web Service Usergroup.asmx
UserGroupWebService.UserGroup ugService=new UserGroupWebService.UserGroup();
XmlNode ugNode=ugService.GetUserInfo("Server\\LoginName");
XmlDocument ugdoc = new XmlDocument();
ugdoc.LoadXml(ugNode.OuterXml);
XmlNodeList ugList = ugdoc.GetElementsByTagName("User");
string id = ugList[0].Attributes["ID"].Value;
然后如以下格式:
<Field Name='User'>ID;#domian\\account</Field>
posted @ 2009-04-27 14:45 jdxyw 阅读(275) 评论(0)
编辑
今天,写一个很简单的workflow,严格来说,就只有两步.其中有一步用到了OnWokflowItemChange.这个是我第一次用到的activity.因为在code里面有好几处用到了,例如SPWeb, SmtpClient等对象,所以在类中创建了两个相应的成员变量.结果将这个workflow deploy之后,start一个workflow之后,这个workflow就立刻的complete了.在workflow的history里面,有条记录是说SmtpClient不是一个可以被序列化的对象.由此可以知道,我们不你能在workflow中创建一些除了基本类型的成员变量.在将这些变量删除之后,改为在方法中创建为local 的变量,workflow就可以正常运行了.
posted @ 2009-04-27 14:44 jdxyw 阅读(212) 评论(2)
编辑