SharePoint:自定义Webpart中的FormField?

时间:2011-05-11 07:52:12

标签: sharepoint sharepoint-2010 controltemplate dataformwebpart

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

列表中有三个字段:标题(文本),正文(富文本),类别(查找)。

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

所以我开始实现自定义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,但没有成功。

我也反映过&#34; SP dll注意到FormComponent类正在使用&#34; Context&#34;由ListFormWebPart设置。

最后,我的问题是:

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

事先感谢你们的帮助......我现在几天挣扎着这个简单的案子...

1 个答案:

答案 0 :(得分:0)

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