1

在我的主页上,我想要一个简单的 Web 部件,允许用户快速填写列表中的条目。

比如说,该列表有三个字段:标题(文本)、正文(富文本)、类别(查找)。

我不想使用标准的 DataFormWebPart,因为我有一些代码隐藏也填充了我列表的一些技术隐藏字段(实际上,我不排除 DataFormWebPart,但我没有找到如何使用它后面有代码)。

所以我开始实现一个自定义的 webpart。因为我不想手动处理每个字段输入,所以我开始使用FormField控件,它会自动选择渲染控件,并提供Value具有正确格式的属性:

<SharePoint:FormField runat="server" id="fldTitle" FieldName="Title" />

这段代码是不够的,我必须指定 listid :

<SharePoint:FormField runat="server" id="fldTitle" FieldName="Title" ListId="{title list guid}" />

这工作得非常正确。我可以在代码中访问fldTitle.Value以检索用户输入。

但是我必须将 webpart 包含在可以激活的正确打包和部署的功能中。webpart 将始终以相同的列表为目标,但由于该列表也在功能(ListInstance 元素)中实例化,因此我无法提前知道 Guid。

我尝试过使用几种技术来动态设置列表 ID,但没有成功。

我还“反映”了 SP dll,以注意到 FormComponent 类正在使用由 ListFormWebPart 设置的“上下文”。

最后,我的问题是:

  • 这是在主页上创建自定义输入 webpart 的正确方法(不是列表自定义表单)吗?
  • 如何保持 FormField 的行为(选择正确的控件并处理输入及其到存储格式的转换)?
  • 我必须创建自定义 ListFormWebPart 吗?
  • 我可以玩 ControlTemplates 吗?

在此先感谢您的帮助...我已经为这个简单的案例苦苦挣扎了好几天...

4

1 回答 1

0

我认为自定义表单模板是自定义列表表单的最简单方法。由于自定义表单模板是作为用户控件实现的,因此您可以添加任何您想要的代码。请参阅以下文章: http: //www.codeproject.com/KB/sharepoint/SharePointListForms.aspx

于 2011-07-26T19:16:17.500 回答