【问题标题】:Form Re-Submission Deletes Next GridView Row表单重新提交删除下一个 GridView 行
【发布时间】:2012-01-26 03:31:47
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

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

    Response.Redirect(Request.RawUrl);
    

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

    【讨论】:

    • 是的,这确实有效。不过一件小事。我有一个 asp:label 在触发删除方法时显示。但是重定向页面不显示删除确认标签?如何仅在触发删除方法时在页面重新加载时显示标签?
    • 向页面添加 URL 参数,而不是在页面加载方法中查找该参数并在 URL 参数存在时启用标签。
    猜你喜欢
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2017-01-22
    • 2012-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多