2012-01-26 2 views
1

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

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

Response.Redirect(Request.RawUrl); 

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

+0

Да, это действительно работает. Однако одна мелочь. У меня есть asp: label, отображаемый при запуске метода удаления. Однако перенаправление страницы не отображает метку подтверждения удаления? Как показать ярлык на странице перезагрузки только при запуске метода удаления? – HGomez90

+0

Добавьте параметр URL-адреса на страницу, чем найдите этот параметр в методе загрузки страницы и включите метку, если был указан параметр URL. – m0sa

+0

Спасибо. благодаря – HGomez90

Смежные вопросы