2012-01-26 59 views
1

我有一個Gridview和​​方法從數據庫和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); 

這應該工作,因爲刪除操作是對當前.aspx頁面的POST命令。

+0

是的,這是行不通的。然而一件小事。我有一個asp:標籤,當delete方法被觸發時顯示。但是,重定向頁面不顯示刪除確認標籤?只有在觸發刪除方法時,如何才能在頁面上重新加載標籤? – HGomez90

+0

向頁面添加URL參數,而不是在頁面加載方法中查找該參數,並在URL參數存在時啓用標籤。 – m0sa

+0

謝謝。謝謝 – HGomez90