2013-05-08 47 views
0

我正在处理FormView
我有一个荒谬的长输入表单,所以我想知道是否有一种方法,以编程方式将所有控件从ItemTemplate复制到InsertItemTemplate/UpdateItemTemplate,所以我不必重复.aspx中的所有文本框/ DDL等,因为输入的信息对于更新/插入都是一样的(我已经知道我可以复制/粘贴,但.aspx已经够混乱了)。从ItemTemplate复制控件

我可以设置InsertItemTemplate = ItemTemplate当我设置模式为插入字段都显示。问题是,当我在提交事件中尝试执行FindControl时,我总是得到空值。

回答

0

您可以创建一个user control来保存您的布局。注册控制在你的网页:

<%@ Register TagPrefix="ctrl" TagName="FormControl" Src="FormControl.ascx" %> 

,并将其添加到FormView

<asp:FormView ID="FormView1" runat="server" 
DataSourceID="ObjectDataSource1" 
AllowPaging="True" EnableViewState="False"> 

    <ItemTemplate> 
    <ctrl:FormControlID="MyControl1" runat="server" Mode="Item"/> 
    </ItemTemplate> 
    <InsertItemTemplate> 
    <ctrl:FormControlID="MyControl2" runat="server" Mode="InsertItem"/> 
    </InsertItemTemplate> 
</FormView> 

我加了一个Mode参数,因为它可能是根据所选择的模式来改变你的控件内的布局。

+0

谢谢!这正是我所需要的,只是一点想象力 – 2013-05-12 17:54:23

0

如果你把所有的控件放在一个容器中 - 比如一个面板 - 你可以通过面板的.Controls属性在代码中获得它们。遍历这个,那么你可以将它们添加到面板中的其他模板...只是一个想法... :)

的foreach(在myItemPanel.controls VAR项目) myInsertPanel.controls.add(项目)

如果您将原始控件嵌套在每个其他控件中,则需要在foreach循环中反映该内容...