【发布时间】:2013-10-11 15:43:51
【问题描述】:
这是我的第一篇文章,所以请温柔。关于下面的标记和代码(这都在用户控件内),这很好用。当我尝试从表单视图呈现的列表中删除多个项目时,会出现此问题。
我可以删除一个项目,然后页面重新加载,我删除的项目消失了。如果我然后单击另一个项目上的删除,则根本没有明显的响应。在后面页面中的所有函数等上放置断点表明它确实完成了它应该做的所有事情,但浏览器根本没有显示任何响应。如果我随后手动刷新浏览器,我删除的第二个项目就消失了。
我真的需要在每次单击删除时刷新浏览器,如果可能的话,我可以理解问题所在。我已经尝试在表单视图和转发器中分别和一起使用 ViewStateMode="Disabled/Enabled" 。
附加 - 我也尝试过禁用缓存。
提前致谢。
<asp:FormView ID="fvDrugActiveSubstance" runat="server" DefaultMode="ReadOnly" UseSubmitBehavior="false" Width="100%">
<ItemTemplate>
<table style="border-collapse: collapse; border-spacing: 0;width: 100%;">
<tr>
<th style="width:80%;">Name</th>
<th style="width:10%;">Edit</th>
<th style="width:10%;">Delete</th>
</tr>
<asp:Repeater ID="rptrDrugActiveSubstance" runat="server" OnItemCommand="rptrDrugActiveSubstance_ItemCommand">
<ItemTemplate>
<tr class="view_table" style="">
<td>
<asp:Label Text='<%# Eval("ActiveSubstanceName") %>' ID="lblName" runat="server" />
<asp:Label Text='<%# Eval("DrugSafetyDrugCode") %>' ID="lblCode" runat="server" Visible="false" />
</td>
<td>
<img onclick='<%# String.Format("openDrugActiveSubstanceWindow( {1},{0},\"Write\" );return false;",((DrugActiveSubstance)Container.DataItem).DrugSafetyDrugCode.ToString(),((DrugActiveSubstance)Container.DataItem).DrugSafetyDrugActiveSubstanceCode) %>' src="/images/grid_icons/edit.png" style="cursor: pointer;" title="Edit" />
</td>
<td>
<asp:ImageButton ID="btnDelete" runat="server" CommandArgument='<%# Eval("DrugSafetyDrugActiveSubstanceCode") %>' style="cursor: pointer;" CommandName="cmd_delete" ImageUrl="~/images/grid_icons/Delete.gif" ToolTip="Delete" />
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="view_table_alt">
<td>
<asp:Label Text='<%# Eval("ActiveSubstanceName") %>' ID="lblName" runat="server" />
<asp:Label Text='<%# Eval("DrugSafetyDrugCode") %>' ID="lblCode" runat="server" Visible="false" />
</td>
<td>
<img onclick='<%# String.Format("openDrugActiveSubstanceWindow( {1},{0},\"Write\" );return false;",((DrugActiveSubstance)Container.DataItem).DrugSafetyDrugCode.ToString(),((DrugActiveSubstance)Container.DataItem).DrugSafetyDrugActiveSubstanceCode) %>' src="/images/grid_icons/edit.png" style="cursor: pointer;" title="Edit" />
</td>
<td id="tdDelete">
<asp:ImageButton ID="btnDelete" runat="server" CommandArgument='<%# Eval("DrugSafetyDrugActiveSubstanceCode") %>' style="cursor: pointer;" CommandName="cmd_delete" ImageUrl="~/images/grid_icons/Delete.gif" ToolTip="Delete" />
</td>
</tr>
</AlternatingItemTemplate>
</asp:Repeater>
</table>
</ItemTemplate>
</asp:FormView>
protected void rptrDrugActiveSubstance_ItemCommand(object source, RepeaterCommandEventArgs e)
{
drugSafetyService.DeleteDrugActiveSubstance(int.Parse(e.CommandArgument.ToString()));
Response.Redirect(HttpContext.Current.Request.Url.ToString().Split('?')[0] + "?#drugAS_accordian");
}
【问题讨论】:
-
在 Chrome 上打开开发者工具并检查服务器的响应是什么。检查 HTTP 响应是否有任何变化。
-
谢谢。我试过了,在第一次点击(成功)的结果下得到了 200 和 304,然后在第二次点击的结果下得到了(中止)。除了显而易见的,我不知道这意味着什么。我不明白什么中止或为什么。
-
A 304 表示“未修改”(w3.org/Protocols/rfc2616/rfc2616-sec10.html),它仅用于 GET http 响应。这意味着您正在执行 GET,而不是 POST。请检查第一次单击后 btnDelete 按钮的 onclick 属性是什么
-
这是我从前任那里继承的一个大型且过度编码的网站。经过很多混乱后,我发现了一个导致中止的javascript函数,现在一切正常。非常感谢您的帮助。
标签: asp.net