表单重新提交删除下一个GridView行

时间:2012-01-26 03:31:47

标签: c# asp.net gridview

我有一个GridviewOnRowDeleting方法,可以从数据库和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();
}

1 个答案:

答案 0 :(得分:0)

您可以在删除行后始终将用户重定向到初始页面,例如在RowDeleted处理程序中。

Response.Redirect(Request.RawUrl);

这应该有效,因为删除操作是对当前.aspx页面的POST命令。