dopost 发表于 2015-9-30 07:59:47

在SharePoint Web Part的ToolPart中使用SPListTemplateType构成下拉框,在选择时发生错位的现象的解决方法

  比如当某一属性下拉框选定为A, 但取得的属性值却是A下面的那个选项值
---------------------------------------------------------------

在SharePoint Web Part的ToolPart中使用SPListTemplateType构成下拉框,在选择时发生错位的现象。
目前研究的结果:
1.   SPListTemplateType在SharePoint中的定义如下:
public enum SPListTemplateType: int
    {
      // this should never be used to set a listtemplatetype.
      // This is used only to used to enumerate all types
      // Warning: If you add or remove items in this list,
      //          beware that you may affect the values of other items
      InvalidType =-1,
      // begin usable types
      GenericList = 100,         // LISTTEMPLATE_GENERIC_LIST            100
      DocumentLibrary,         // LISTTEMPLATE_DOCUMENT_LIBRARY      101
      Survey,                  // LISTTEMPLATE_SURVEY                  102
      Links,                     // LISTTEMPLATE_LINKS                   103
      Announcements,             // LISTTEMPLATE_ANNOUNCEMENTS         104
      Contacts,                  // LISTTEMPLATE_CONTACTS                105
      Events,                  // LISTTEMPLATE_EVENTS                  106
      Tasks,                     // LISTTEMPLATE_TASKS                   107
      DiscussionBoard,         // LISTTEMPLATE_DISCUSSION            108
      PictureLibrary,            // LISTTEMPLATE_IMAGE_LIBRARY         109
      DataSources,               // LISTTEMPLATE_DATA_SOURCES            110
      WebTemplateCatalog,      // LISTTEMPLATE_WEB_TEMPLATE_CATALOG    111
      WebPartCatalog = 113,      // LISTTEMPLATE_WEB_PART_CATALOG      113
      ListTemplateCatalog,       // LISTTEMPLATE_LIST_TEMPLATE_CATALOG   114   

      XMLForm,                   // LISTTEMPLATE_XML_FORM_LIBRARY      115
      CustomGrid = 120,          // LISTTEMPLATE_CUSTOMGRID            120

      // Range 200-299 is used for Meetings List Template Id

      IssueTracking = 1100,      // LISTTEMPLATE_ISSUE_TRACKING    1100
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++

由此可见SPListTemplateType中的数值不是默认的从0开始的枚举型变量,而且这些值的真正定义在
C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\1033\STS\XML\ONET.XML中,其中InvalidType的值是-1,造成了选择项的错位。

2.   我们可以将您已经编写的(出错的)Web Part放置到页面上,并切换到编辑共享Web组件的界面,查看当前页面的HTML代码,我们会发现:
<option value="DocumentLibrary">DocumentLibrary</option>
<option value="Survey">Survey</option>
<option value="Links">Links</option>
<option value="Announcements">Announcements</option>
<option value="Contacts">Contacts</option>
<option value="Events">Events</option>
……
因此,Web Part的下拉框把枚举型转换成下拉框的同时抛弃了原有的数值型的值。因此在读取选择项生成List时,需要必要的类型转换。

3.   建议我们自己生成一个自定义的枚举类型,并且显式的声明第一个元素的值是0,如MSDN中的样例代码所示:
      public enum myFarmEnum
      {
            barn=0,
            tractor,
            hay,
            pitchfork
      };

希望以上信息对您有所帮助。如果对上述问题有任何不清楚的地方,请告诉我,谢谢。

Liang Ming - 梁明
Support Engineer - 技术支持工程师
页: [1]
查看完整版本: 在SharePoint Web Part的ToolPart中使用SPListTemplateType构成下拉框,在选择时发生错位的现象的解决方法