我正在处理FormView
我有一个荒谬的长输入表单,所以我想知道是否有办法以编程方式将所有控件从ItemTemplate
复制到InsertItemTemplate/UpdateItemTemplate
所以我不必重复所有文本框/ DDL等.aspx
因为输入的信息对于更新/插入都是相同的(我已经知道我可以复制/粘贴,但.aspx
已经足够混乱了。)
我可以设置InsertItemTemplate = ItemTemplate
,当我将模式设置为Insert时,所有字段都会显示。问题是当我尝试在提交事件中执行FindControl
时,我总是得到null。
答案 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
参数,因为它可能会根据所选模式更改控件中的布局。