【发布时间】:2010-03-12 10:21:41
【问题描述】:
我在一个页面上有 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 按钮后立即重新显示该按钮?
【问题讨论】:
标签: asp.net listview button events