我有一个转发器,这些项目可以通过编辑按钮进行编辑,该按钮可以在编辑模式下打开FormView。 formView最初是不可见的,并且转发器可见。按下编辑后,转发器将不可见,然后使用要编辑的项目可以看到窗体视图。
更改完成后,用户按下更新。这会将formview设置为不可见,并将转发器设置为可见。
问题是formview不可见但转发器不可见。我认为这是因为formview在更新面板中并且转发器不在?单击更新时,只更改了更新面板中的项目,因为它只是部分页面更新。
我无法将转发器放在更新面板中,因为要求公共视图不使用javascript。
有谁知道如何让转发器重新出现?
<asp:Repeater id="resultsRepeater" runat="server" DataSourceID="vehiclesDataSource" >
<ItemTemplate>
<asp:Label id="makeLabel" runat="server" Text='<%# Eval("Make") %>' />
<asp:Button id="editButton" runat="server" Text="Edit" CommandArgument='<%# Eval("Id") %>' OnClick="EditButton_Click" />
</ItemTemplate>
<asp:Repeater>
<asp:UpdatePanel ID="updatePanel" runat="server">
<ContentTemplate>
<asp:Panel id="insertUpdatePanel" runat="server" Visible="false">
<asp:FormView id="editformview" runat="server" DataKeyNames="Id" Datasourceid="VehiclesEditDataSource" >
<EditItemTemplate>
<uc:VehiclesEdit ID="VehiclesEdit" runat="server" />
<asp:Button id="updateButton" runat="server" OnClick="Update_Click" />
</EditItemTemplate>
</asp:FormView>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
protected void EditButton_Click(object sender, EventArgs e)
{
resultsRepeater.Visible = false;
insertUpdatePanel.Visible = true;
}
protected void Update_Click(object sender, EventArgs e)
{
resultsRepeater.Visible = true;
insertUpdatePanel.Visible = false;
}
答案 0 :(得分:1)
这可能会有所帮助。我有类似的问题,这对我有用。我只是使用ScriptManager来注册按钮(甚至按行迭代)作为回发控件,如下所示:
ScriptManager.GetCurrent(Page).RegisterPostBackControl(updateButton)
这会导致完整的回发,并允许我在更新面板外设置面板的可见性。我希望它有效!
答案 1 :(得分:0)
修订版:在UpdatePautton中添加一个PostBackTrigger,以便在单击UpdateButton时强制进行完整的回发。这将隐藏您的UpdatePanel并再次显示您的Repeater。请参阅下面的最终代码:
<asp:UpdatePanel ID="updatePanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="updateButton" />
</Triggers>
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" Visible="false">
<asp:FormView ID="editformview" runat="server" DataKeyNames="Id" DataSourceID="VehiclesEditDataSource">
<EditItemTemplate>
<uc:vehiclesedit id="VehiclesEdit" runat="server" />
</EditItemTemplate>
</asp:FormView>
<asp:Button ID="updateButton" runat="server" OnClick="Update_Click" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>