我有一个listview,可以从xml / xslt
加载动态控件 <asp:ListView ID="DynamicFields" runat="server"
DataSourceID="CustomFields"
OnItemDataBound="DynamicFields_ItemDataBound"
GroupItemCount="2" ItemPlaceholderID="itemsGroup"
GroupPlaceholderID="itemsGroup">
<LayoutTemplate>
<table width="470" border="0" cellpadding="0" cellspacing="10">
<asp:PlaceHolder ID="itemsGroup" runat="server" />
</table>
</LayoutTemplate>
<GroupTemplate>
<tr>
<asp:PlaceHolder runat="server" ID="itemsGroup"></asp:PlaceHolder>
</tr>
</GroupTemplate>
<ItemTemplate>
<custom:CustomField ID="Field" runat="server"
FieldIndex='<%# Eval("index") %>' />
</ItemTemplate>
<AlternatingItemTemplate>
<custom:CustomField ID="Field" runat="server"
FieldIndex='<%# Eval("index") %>' />
</AlternatingItemTemplate>
</asp:ListView>
在我的页面代码隐藏中,我绑定用户控件属性并调用加载xml并创建控件的bind方法
protected void DynamicFields_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
ucCustomField uc = (ucCustomField)e.Item.FindControl("Field");
uc.FileName = FORM_PATH;
uc.FormName = FORM_NAME;
uc.LoadXMLFile(); //binding xml content here
}
}
我将此listview添加到具有静态控件和保存按钮的现有表单中。当我单击按钮时,它会导致验证并显示验证摘要弹出消息[预期],在弹出窗口中单击确定后,listview中的所有动态控件都会消失。 如何保持这些控件可见以及在回发后可能输入的任何值?
答案 0 :(得分:0)
在我的页面代码隐藏中,我绑定用户控件属性并调用加载xml并创建控件的bind方法
你能告诉你在哪里调用Bind / Databind方法吗?把它放在页面加载中我想解决这个问题。回发将删除动态添加到页面的任何内容。
此致 SJ
答案 1 :(得分:0)
确保你不在标题内,不确定这是否有帮助,但请尝试以下
if(e.Item.ItemType == ListItemType.Item
|| e.Item.ItemType == ListItemType.AlternatingItem)
{
}
答案 2 :(得分:0)
通过在DynamicFields.DataBind()
为真时调用Page.IsPostback
来解决此问题