单击ListView行中的按钮后立即重新显示按钮

时间:2010-03-12 10:21:42

标签: asp.net listview button events

我在页面上有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按钮后立即重新显示按钮?

1 个答案:

答案 0 :(得分:0)

我使用了ObjectDataSource Deleted事件,并将response.redirect转发到同一页面。这就行了。