SPListItem追加之遭遇非主流(URL型SPField)

  今天尝试用代码往 SPList里追加一条数据,意外的碰到一个“非主流”的列( URL SPField),应该说是小弟学艺未精,调查了毛一个小时还是不知道怎么输入。后来在前辈的指引下算是找到了方法。写下来加深记忆。

      目标 SPListItem里有 一个自定义列 SPField),取了个名字叫“ URL”,选择的类型是“ ハイパーリンクまたは画像 ”不知道中文应该怎么说,列的 SPFieldType应该是【 URL】。 这个列显示的是 URL Title,点击之后会链接到事先输入的 URL去。

      普通往 SPListItem里追加数据非常简单, 参考 MSDN http://msdn.microsoft.com/en-us/library/ms470423.aspx ),摘录代码如下
SPSite oSiteCollection = SPContext.Current.Site;

SPList oListSrc = oSiteCollection.AllWebs["Destination_Site"].Lists["Destination_List"];

SPListItemCollection collListItemsDest = oListSrc.Items;

SPListItem oListDest = collListItemsDest.Add();

oListDest["Field1_Name"] = "Scenario 2";

oListDest["Field2_Name"] = 45;

oListDest["Field3_Name"] = "A sample note for this item.";

oListDest.Update();

      但如果碰到 URL类型则要往一个 Field里面添加两条数据,这个东西不知道内部存储机制还真难下手。其实 sharepoint里很多数据之间都仅仅用很简单的符号来区分,像访问群体间就是用 ;; 隔开,域用户间就用“ "n”隔开等等。而这里的两条数据之间,就是使用了“, ”(注意逗号后面有个单字节空格)来分隔。下面看代码吧

代码实现:

oListDest["URL"] = "<Title>, <URL>";

(具体还请参考上面的从 MSDN上剽窃来的代码吧~ ^^)

 

追记: 感谢【bmy_light 】的热情回复~。上文所提及的输入方法可以用WSS3.0 SDK中的方法SPFieldUrlValue 来替代。

“超链接或图片”类型栏的值,对应的对象模型为SPFieldUrl和SPFieldUrlValue,可以这样读取:
SPFieldUrl fieldUrl = (SPFieldUrl)item.Fields["URL"];

SPFieldUrlValue value = (SPFieldUrlValue)fieldUrl.GetFieldValue(item["URL"].ToString()); Console.WriteLine(value.Description); Console.WriteLine(value.Url);

或者更简单的方法:

SPFieldUrlValue value = new SPFieldUrlValue(item["URL"].ToString());    

    Console.WriteLine(value.Description);      

  Console.WriteLine(value.Url);

设置

 using (SPSite site = new SPSite("http://basesmcdev/sitedirectory/tester1"))    

         {             

    using (SPWeb web = site.OpenWeb())         

        {                    

SPList list = web.Lists["mosstestchoices"];
  SPListItem item = list.GetItemById(3);          

  SPFieldUrlValue spfv = new SPFieldUrlValue(item["myhyperlink"].ToString());         

  spfv.Url = "http://whatever.com";            

   spfv.Description = "new description";            

    item["myhyperlink"] = spfv.ToString();                    

    item.Update();

                }

            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值