初步问题
我可以将数据从一个字段渲染为多个列吗?
背景
我创建了一个自定义字段,其中包含一个下拉列表和两个文本框。我们的想法是,用户可以从下拉列表中选择与供应商列表相关联的供应商。这将获取供应商的联系人姓名和号码,并填写相应的文本框。
我这样做是因为能够覆盖联系号码和地址很重要,但客户希望看到默认值。
看看它的样子:
在保存新条目时,字段的值保存如下:
;#1; #Supplier 1; #Contact Name;#01234 567890;#
我选择保存数据,因此我可以在渲染时将其视为多列字段。
我使用以下代码拆分数据并覆盖列表视图的显示模式:
<RenderPattern Name="DisplayPattern">
<Switch>
<Expr>
<Column />
</Expr>
<Case Value="" />
<Default>
<!--<Column SubColumnNumber="0" HTMLEncode="TRUE" />
<HTML><![CDATA[<br/>]]></HTML>-->
<Column SubColumnNumber="1" HTMLEncode="TRUE" />
<HTML><![CDATA[ - ]]></HTML>
<Column SubColumnNumber="2" HTMLEncode="TRUE" />
<HTML><![CDATA[ - ]]></HTML>
<Column SubColumnNumber="3" HTMLEncode="TRUE" />
<HTML><![CDATA[]]>]></HTML>
</Default>
</Switch>
</RenderPattern>
这允许我将数据呈现给最终用户,如下所示:
问题
我希望能够在单独的列中显示此拆分数据。我注意到SharePoint使用的内置标题字段有四种类型的列,您可以将这些列添加到单个字段的视图中。我正在尝试重现这种功能,因此可以在视图中添加或删除数据的每个部分。这可能吗?
答案 0 :(得分:0)
事实证明你已经访问了列表项,这意味着我只需通过覆盖UpdateFieldValueInItem方法即可添加到列表项中的其他字段。
Public Overrides Sub UpdateFieldValueInItem()
Me.ItemFieldValue = ddlSupplier.SelectedItem.Value
If Me.Item.Fields.ContainsField(Me.Field.InternalName & "-" & "Telephone") Then
Me.Item(Me.Field.InternalName & "-" & "Telephone") = txtTelephone.Text
End If
End Sub
更有效的方法。