Повторная отправка формы удаляет следующую строку GridView - PullRequest
1 голос
/ 26 января 2012

У меня есть метод Gridview и OnRowDeleting, который удаляет запись из базы данных и вид сетки. Моя проблема в том, что когда пользователь нажимает кнопку удаления в 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 голосов
/ 26 января 2012

Вы всегда можете перенаправить пользователя на начальную страницу после удаления строки, например, в обработчике RowDeleted.

Response.Redirect(Request.RawUrl);

Это должно работать, поскольку действие удаления является командой POST для текущего .aspx.стр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...