我在页面上有4个按钮。每个按钮打开一个模态窗口,让用户在表单中输入数据。当用户点击模态中的保存按钮时,会在页面上显示包含提交数据的ListView。
用户单击以打开模态窗口的按钮设置为visible = false,因此当行添加到ListView时它已消失。现在有3个按钮,这些按钮也是如此;当用户点击按钮时,会出现一个模态,当提交模态表单时,该按钮会消失,并且会向ListView添加一行。
在ListView行中,有一个删除按钮。单击此按钮时,该行将被删除,并且最初单击以添加此行(并打开模态)的按钮应该重新出现,但事实并非如此。该行消失,但我必须在按钮返回之前刷新页面。主页上有一个ScriptManager,所以我猜这是一个AJAX部分刷新问题。我尝试添加不同的事件,但我找不到在正确的时间触发的事件。
我使用ObjectDataSource来填充ListView,数据来自数据库,包含在业务对象中。
此代码在List<>中加载业务对象并检查用户是否插入了特定类型的项目。如果他这样做,他用来打开模态的按钮就会被隐藏。这很好(可能不是最优雅的)
_goals = GoalManager.GetGoalsByUser(UserID);
if (_goals != null)
{
foreach (Goal _goalinlist in _goals)
{
if (_goalinlist.GoalType == 1)
{
Button1.Visible = false;
goalid1 = true;
}
if (_goalinlist.GoalType == 2)
{
Button2.Visible = false;
goalid2 = true;
}
if (_goalinlist.GoalType == 3)
{
Button3.Visible = false;
goalid3 = true;
}
if (_goalinlist.GoalType == 4)
{
Button4.Visible = false;
goalid4 = true;
}
}
}
正如您所看到的,我尝试设置一个布尔值,然后在重新加载页面时进行检查。但问题(我猜)是在ListView中单击删除按钮时不刷新整个页面。
这是ListView中的删除按钮:
<asp:ImageButton ID="ImageButton2" runat="server" CommandName="Delete" CausesValidation="false"
ToolTip="Delete" CommandArgument='<%#Eval("GoalID")%>' ImageUrl="delete.gif"
OnClientClick="return confirm('Delete this post?');" CssClass="button"/>
我想问题是,如何在单击ListView按钮后立即重新显示按钮?
答案 0 :(得分:0)
我使用了ObjectDataSource Deleted事件,并将response.redirect转发到同一页面。这就行了。