我有一个Gridview
和OnRowDeleting
方法,可以从数据库和gridview中删除记录。
我的问题是,当用户单击Gridview
中的删除按钮时,记录将从数据库中删除,但GridView
不显示此更新(不刷新)。如果用户然后刷新页面导致表单重新提交,那么GridView
将删除最初删除的行下面的行,依此类推,如果页面再次刷新。
如何防止这种情况发生?
这是我的gridview:
<asp:GridView runat="server" ID="gvShowQuestionnaires" HeaderStyle-CssClass="table_header" CssClass="view" AlternatingRowStyle-CssClass="alt" AlternatingRowStyle-BackColor="#f3f4f8" AutoGenerateColumns="False"
DataKeyNames='QuestionnaireID' OnRowDeleting="gvShowQuestionnaires_RowDeleting" OnRowEditing="gvShowQuestionnaires_RowEdit" OnSelectedIndexChanged="gvShowQuestionnaires_SelectedIndexChanged" FooterStyle-CssClass="view_table_footer" >
<Columns>
<asp:BoundField DataField="QuestionnaireID" HeaderText="ID" HeaderStyle-Width="80px" ItemStyle-CssClass="bo"></asp:BoundField>
<asp:BoundField DataField="QuestionnaireName" HeaderText="Questionnaire Name" />
<asp:ButtonField CommandName="select" ButtonType="Link" Text="hello" />
<asp:CommandField HeaderText="Options" CausesValidation="true" ShowDeleteButton="True" ShowEditButton="true" EditText="Edit">
</asp:CommandField>
</Columns>
</asp:GridView>
这是OnRowDeleting方法。
protected void gvShowQuestionnaires_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int questionnaireID = (int)gvShowQuestionnaires.DataKeys[Convert.ToInt32(e.RowIndex)].Value;
GetData.DeleteQuestionnaire(questionnaireID); // Deletes Questionniare from database
gvShowQuestionnaires.DataSource = DT;
gvShowQuestionnaires.DataBind();
}
答案 0 :(得分:0)
您可以在删除行后始终将用户重定向到初始页面,例如在RowDeleted处理程序中。
Response.Redirect(Request.RawUrl);
这应该有效,因为删除操作是对当前.aspx页面的POST命令。