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

SharePoint Web PartToolPart中使用SPListTemplateType构成下拉框,在选择时发生错位的现象。

目前研究的结果:

1.     SPListTemplateTypeSharePoint中的定义如下:

  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 - 技术支持工程师

posted on 2004-09-21 21:08  ben  阅读(1677)  评论(0)    收藏  举报