我在.net應用程序中使用<asp:CommandField
實現了GridView行編輯功能。 我點擊更新按鈕來保存編輯行後的記錄。現在如果我刷新頁面或按F5 GridView_RowCommand再次發射。在頁面刷新時再次觸發GridView_RowCommand事件
我們該如何避免這種情況。當用戶按F5或刷新頁面時,是否有任何機制可以識別。是否存在客戶端或服務器端的任何方法。
我在.net應用程序中使用<asp:CommandField
實現了GridView行編輯功能。 我點擊更新按鈕來保存編輯行後的記錄。現在如果我刷新頁面或按F5 GridView_RowCommand再次發射。在頁面刷新時再次觸發GridView_RowCommand事件
我們該如何避免這種情況。當用戶按F5或刷新頁面時,是否有任何機制可以識別。是否存在客戶端或服務器端的任何方法。
不正是最好的「技術」的解決您的問題,但你總是可以只是做一個Response.Redirect(Request.RawUrl)
當你完成做任何事情,你需要在你的RowCommand
做就像我說的,這不是最好的「技術「解決方案,但它是一個解決方案
戴夫
Session["LastInsertedItem"] = null;
MyCustomObjType myCustomObject;
protected void Page_Load(object sender, EventArgs e)
{
myCustomObject = Session["LastInsertedItem"] as MyCustomObjType;
}
void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
If(myCustomObject == null || //!(compare your value with myCustomObject.field))
{
// do your operations and save the values to myCustomObject and save that object back to Session.
}
else
{
// It is refreshed or same data is being insterted - don't know if second option is possible in your case.
}
}
捕獲此問題的一種方法是維護與相關頁面相關的會話變量。在會話變量中,您將保留某種狀態枚舉,鍵或字符串來確定最後採取的操作。你甚至可以使用一個簡單的遞增計數器,並且如果你曾經收到一個與會話變量相同的回傳計數器,它將表示一個頁面刷新,而不是一個新的動作。
我得到的IsPostBack =真當我點擊更新按鈕和頁面刷新也。 – Sukhjeevan 2011-01-28 12:23:43
當我刷新頁面我得到了Ispostback = true和數據再次保存,我已經保存在updatebutton點擊。 – Sukhjeevan 2011-01-28 12:35:38