SPField和SPFieldMultiChoice的用法

单选:

         

   SPFieldChoice s = list.Fields[ " 案例所属 " ] as SPFieldChoice;   
   foreach ( string c in s.Choices)
       {   
              ddlTo.Items.Add(c);  // 用于下拉菜单  
        }
 

多选:

                 

Code     SPFieldMultiChoice ss = list.Fields["分类"] as SPFieldMultiChoice;
       
foreach (string cc in ss.Choices)    
          {      
                  ckType.Items.Add(cc);//用于多选的checkboxList   
          }
 
多选字段值的获得
 
  SPFieldMultiChoice chInjury = (SPFieldMultiChoice)m_listItem.Fields["Injury"];
      string valueInjury = chInjury.GetFieldValueAsText(m_listItem["Injury"]);   
      lbInjury.Text = valueInjury.Replace(", ", "<br/>");
 

List中创建MulitChoice类型的Field

MulitChoice类型的Field在List中是常用的,它可以用来标记一个Item的Tag,使用户在创建Item时适当的Tag标签,是很好的管理和检索标记;

 

在创建Field时,我们需要对MulitChoice类型的Field做相应的处理;下面我们就来创建一个MulitChoice类型的Field;

[c-sharp] view plain copy print ?
  1. privatestring[] mTagValue = newstring[] {"Asp.Net", "Microsoft", "C#"}; 
  2. privatestring mListName = "Article"
  3.  
  4. publicvoid MakeList(string listName) 
  5.     using (SPSite site = new SPSite(listName)) 
  6.     { 
  7.         using (SPWeb web = site.OpenWeb()) 
  8.         { 
  9.             SPList list = web.GetList(listName); 
  10.             if (list.Fields.ContainsField("Tag")) 
  11.             { 
  12.                 SPField tagField = list.Fields["Tag"]; 
  13.                 if (!tagField.Type.Equals(SPFieldType.MultiChoice)) 
  14.                 { 
  15.                     tagField.Type = SPFieldType.MultiChoice; 
  16.                     tagField.Update(); 
  17.                 } 
  18.                 SPFieldMultiChoice tagChoice = (SPFieldMultiChoice)tagField; 
  19.                 if (tagChoice.Choices.Count == 0) 
  20.                 { 
  21.                     MakeTagValue(list); 
  22.                 } 
  23.             } 
  24.             else 
  25.             { 
  26.                 list.Fields.Add("Tag", SPFieldType.MultiChoice, false); 
  27.                 MakeTagValue(list); 
  28.             } 
  29.         } 
  30.     } 

private string[] mTagValue = new string[] {"Asp.Net", "Microsoft", "C#"}; private string mListName = "Article"; public void MakeList(string listName) { using (SPSite site = new SPSite(listName)) { using (SPWeb web = site.OpenWeb()) { SPList list = web.GetList(listName); if (list.Fields.ContainsField("Tag")) { SPField tagField = list.Fields["Tag"]; if (!tagField.Type.Equals(SPFieldType.MultiChoice)) { tagField.Type = SPFieldType.MultiChoice; tagField.Update(); } SPFieldMultiChoice tagChoice = (SPFieldMultiChoice)tagField; if (tagChoice.Choices.Count == 0) { MakeTagValue(list); } } else { list.Fields.Add("Tag", SPFieldType.MultiChoice, false); MakeTagValue(list); } } } }

 

 

这里我们需要一个MakeTagValue这个方法对我们创建的Field添加我们需要的Choice;需要对Field的SchemaXml进行相应的操作;

 

[c-sharp] view plain copy print ?
  1. privatevoid MakeTagValue(SPList list) 
  2.     try 
  3.     { 
  4.         SPField field = list.Fields["Tag"]; 
  5.         XmlDocument xmlDoc = new XmlDocument(); 
  6.         xmlDoc.LoadXml(field.SchemaXml); 
  7.          
  8.         if(xmlDoc.GetElementsByTagName("CHOICES").Count == 0) 
  9.         { 
  10.             XmlElement xmlRoot = xmlDoc.CreateElement("CHOICES"); 
  11.             xmlDoc.FirstChild.AppendChild(xmlRoot); 
  12.         } 
  13.         foreach (string tagValue in mTagValue) 
  14.         { 
  15.             XmlElement xmle = xmlDoc.CreateElement("CHOICE"); 
  16.             xmle.InnerText = tagValue; 
  17.             xmlDoc.GetElementsByTagName("CHOICES")[0].AppendChild(xmle); 
  18.         } 
  19.         field.SchemaXml = xmlDoc.OuterXml; 
  20.         field.Update(); 
  21.     } 
  22.     catch (Exception ex) 
  23.     { } 

private void MakeTagValue(SPList list) { try { SPField field = list.Fields["Tag"]; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(field.SchemaXml); if(xmlDoc.GetElementsByTagName("CHOICES").Count == 0) { XmlElement xmlRoot = xmlDoc.CreateElement("CHOICES"); xmlDoc.FirstChild.AppendChild(xmlRoot); } foreach (string tagValue in mTagValue) { XmlElement xmle = xmlDoc.CreateElement("CHOICE"); xmle.InnerText = tagValue; xmlDoc.GetElementsByTagName("CHOICES")[0].AppendChild(xmle); } field.SchemaXml = xmlDoc.OuterXml; field.Update(); } catch (Exception ex) { } }

 

 

在这里我就不截取Field的SchemaXml的代码了,有兴趣的读者可以使用你们的编辑器, 写一个Demo看看里面的结构;

 

转载于:https://www.cnblogs.com/liangyu/articles/2489970.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值