1

我正在尝试在 SharePoint (WSS 3.0) 中创建具有自定义属性的自定义字段类型。我已经根据 SDK 文档和这篇博客文章创建了我的 fldtypes*.xml 文件,它似乎渲染得很好,我可以在我的代码中检索自定义属性值。我的问题是,在初始字段创建之后,如果我返回列表设置页面并单击我新添加的字段,表单会显示我的自定义属性以及我没有提供的一些值。例如,如果我的自定义属性的显示名称是“我的自定义道具”,那么其文本框中的值将是“我的自定义道具字段值”。

我的问题是:如何在这些文本框中正确显示自定义属性类型的实际字符串值?

这是我的 fldtypes*.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<FieldTypes>
  <FieldType>
    <Field Name="TypeName">MyCustomField</Field>
    <Field Name="TypeDisplayName">My Custom Field</Field>
    <Field Name="TypeShortDescription">MyCustomField</Field>
    <Field Name="ParentType">Text</Field>
    <Field Name="UserCreatable">TRUE</Field>
    <Field Name="FieldTypeClass">MyCustomField.CustomFields.MyCustomField, MyCustomField, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d772gbab82fe6996</Field>
    <PropertySchema>
      <Fields>
        <Field Name="MyCustomProp" DisplayName="My Custom Prop" Type="Text" MaxLength="50" DisplaySize="30" />
      </Fields>
    </PropertySchema>
  </FieldType>
</FieldTypes>

这是我的字段类型类的代码:

public class MyCustomField : SPFieldText
{
    private string propval;

    public MyCustomField(SPFieldCollection fields, string fieldName)
        : base(fields, fieldName)
    {
    }

    public MyCustomField(SPFieldCollection fields, string typeName, string displayName)
        : base(fields, typeName, displayName)
    {           
    }

    public override void Update()
    {
        // I can see any updated value here
        propval = GetCustomProperty("MyCustomProp") as string;
        base.Update();
    }

    public override Type FieldValueType
    {
        get { return typeof (string); }
    }

}

如何在我的 SharePoint 应用程序的“更改列”页面 (FldEditEx.aspx) 中查看正确的自定义属性值?

4

1 回答 1

1

在自定义字段类型上保存和检索自定义属性存在一个众所周知的问题。这是解决方法的直接链接。

顺便说一句,帖子上的一些评论声称同样的问题。

于 2009-03-04T04:42:04.397 回答