现在的位置: 首页 > 综合 > 正文

Moss中调查问卷的选项如何取到 List中创建MulitChoice类型的Field

2013年12月01日 ⁄ 综合 ⁄ 共 2582字 ⁄ 字号 评论关闭

使用SPField和SPFieldMultiChoice的用法

单选:

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进行相应的操作;

           privatevoid MakeTagValue(SPList list) 

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

 

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

 

抱歉!评论已关闭.