单选:

         

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

多选:

                 

    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;

  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.     } 

 

 

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

 

  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.     { } 

 

 

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

 
posted on 2012-05-08 13:48  染指的浮云  阅读(498)  评论(0编辑  收藏  举报