从ItemTemplate复制控件

时间:2013-05-08 17:34:20

标签: c# asp.net

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

我可以设置InsertItemTemplate = ItemTemplate,当我将模式设置为Insert时,所有字段都会显示。问题是当我尝试在提交事件中执行FindControl时,我总是得到null。

2 个答案:

答案 0 :(得分:0)

如果您将ItemTemplate中的所有控件放入容器(比如一个面板),您可以通过该面板.Controls属性在代码中找到它们。对此进行迭代后,您可以将它们添加到其他模板中的面板中......只是一个想法...... :)

foreach(myItemPanel.controls中的var项)     myInsertPanel.controls.add(项目)

如果您已将原始控件嵌套在彼此之内,则需要在foreach循环中反映出来...

答案 1 :(得分: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参数,因为它可能会根据所选模式更改控件中的布局。