在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]