MultiListField
中的某些项目必须以html显示,但在2列中显示为:
第1项第2项 Item3 Item4
<div id="menu-section" runat="server">
<div class="clearfix">
<div class="col-xs-6">
<p>Item1 Name</p>
</div>
<div class="col-xs-6">
<p>Item2 Name</p>
</div>
</div>
<div class="clearfix">
<div class="col-xs-6">
<p>Item3 Name</p>
</div>
<div class="col-xs-6">
<p>Item4 Name</p>
</div>
</div>
</div>
内容作者应该能够从体验编辑器编辑每个项目
如果它是一个列,我会使用asp:Repeater
和sc:
控件完成此操作。
所以,相反,我将字符串构建为html并在页面上呈现。
C#
StringBuilder sb = new StringBuilder();
sb.Append("<div class=\"clearfix\">");
.
.
..
menu-section.innerHtml = sb.ToString();
虽然,项目是按照需要呈现的,但我不知道如何使它们可编辑。
在menu-section
内包围sc:EditFrame
只允许添加/删除/排序项目,但不能编辑每个项目。
有什么想法,怎么做?
答案 0 :(得分:6)
使用FieldRenderer渲染字段:
sb.Append(FieldRenderer.Render(item1, "Name");
在页面/体验编辑器上,这会将项目呈现为可编辑。
答案 1 :(得分:4)
我会回到你的转发器解决方案,尝试使用嵌套的转发器。
首先,将您的数据源放入项目列表列表中(例如,您可以使用集合集合)。在您的情况下,每个内部列表将有2个项目(2列)。
将此数据源绑定到外部转发器,它可以为它可以找到的每个条目(列表)生成<div class="clearfix">.. </div>
。在此转发器中创建另一个内部转发器并将条目(内部列表 - 在您的情况下为2个项目的集合)绑定到它。您的内部转发器可以生成<div class="col-xs-6">
元素并使用sc:control。
这将使它们可编辑,但您仍需要编辑框来添加/删除/排序...