ListView - EditItemTemplate& InsertTemplate则

时间:2012-10-16 19:02:36

标签: c# asp.net listview webforms

我目前无法直接访问我的代码库,但希望我能够充分展示我的问题,而无需发布我的实际代码。

为了设置场景,我有一个相当长且笨拙的多页&#34;预订表格&#34;使用MultiView的控件,每个页面都有一个View。我试图重构它以整理它并使其更具可读性(虽然我需要将它保持在一个控件内)。在一个特定的视图中,我有一个ListView,可用于在预订中添加任意数量的其他人。 ListView被手动绑定到List<Person>(通过OnItemUpdatingOnItemInserting事件),这是整个Booking对象的成员。

我的ListView有一个EditItemTemplate和一个InsertItemTemplate。它们几乎完全相同,除了EditItemTemplate有一些关于顶部现有项目的附加信息:

<EditItemTemplate>
    <div class="ItemInfo">
        <!-- Controls a & b -->
    </div>
    <div class="FormControls">
        <!-- Controls c, d, & e -->
    </div>
</EditItemTemplate>

<InsertItemTemplate>
    <div class="FormControls">
        <!-- Controls c, d, & e -->
    </div>
</InsertItemTemplate>

我希望能够做的是将这些模板中的一个基于另一个,这将允许我删除大约300行冗余标记。但是,我仍然只能使用一个独立控件。我已经看到了类似情况的例子已经解决过这样的问题:

protected void lvPeople_Init(Object sender, EventArgs e)
{
    lvPeople.InsertItemTemplate = lvPeople.EditItemTemplate;
}

这里的问题是,这也将把控件放在&#39;和&#39; b&#39;进入InsertItemTemplate。 &#39;一个&#39;和&#39; b&#39;包含新添加项目尚不存在的信息。我可以输入默认值,但这是不可取的,因为表单将是多语言的,这对内容编辑者来说意味着不必要的额外工作 - 这些控件最好是EditItemTemplate独有的。

在没有使用额外控件的情况下,是否有一种巧妙的处理方式?

感谢。

0 个答案:

没有答案