2011-12-28 155 views
2

我在這個應用上的asp.net web應用程序工作時,客戶在登錄,然後他/她如何檢查表單字段數據是否被更改?

的個人信息顯示在表單字段(例如,在名稱框中的全名,年齡在年齡盒等)的獲取數據首先我從ms sql獲取數據,然後將它們分配給ICustomer接口屬性此接口由客戶類實現。

而且我們還在客戶信息頁面上有一個更新按鈕,所以如果用戶點擊更新時沒有改變任何信息,那麼就不必要了,它會去服務器並返回,並在數據庫中更新相同的數據,所以我在試圖要做的只是檢測客戶表單中是否發生了某些變化,然後才能更新功能。

我有兩個選項

  1. 只是使用Java腳本,檢測到的文字變化,則無法更新按鈕。
  2. 作爲ICustomer的臨時引用,並將其與較老的時間進行比較,然後通過使事情成真或假。

所以請建議我爲它或任何其他方法的最佳方法。

如果問題不清楚,那麼只是評論一下,我會解釋更多。

+1

您可以編寫JavaScript代碼來記錄更改並在提交表單時傳遞此信息。 – adatapost 2011-12-28 02:51:07

+0

任何人都沒有回答這個問題沒有JavaScript?我遇到了同樣的問題,並且.OldValues在ItemUpdating方法中始終爲空。我無法將舊價值與新價值進行比較。 – Fandango68 2014-05-14 03:38:25

回答

2

JavaScript可能會幫助你,但它非常不可靠。我說第二個選擇。將ICustomer對象存儲在Session變量中,並將其與新建的對象進行比較。

+0

感謝這一個也是正確的方法之一,如果對象很小 – Peeyush 2011-12-28 18:18:04

5

如果您在asp.net網頁中使用formview或detailsview控件,則可以使用表單的itemupdating事件的OldValues屬性在發佈到數據庫之前比較這些值。我相信這個窗體的viewstate必須被啓用才能工作。

protected void myFormView_ItemUpdating(object sender, FormViewUpdateEventArgs e) 
    { 
     // Access the old values 
     e.OldValues... 

下面是使用detailsview的完整示例。

+0

謝謝你的答案,但我沒有使用formview或細節視圖我只是使用一個簡單的表單,然後請建議我任何解決方案,其他明智的我必須去與對象比較 – Peeyush 2011-12-28 18:17:15

+2

@Peeyush:最簡單的解決方案將捕獲表單值當頁面已經在JavaScript中加載並在表單的提交按鈕被點擊時檢查它們。將值緩存在會話變量中並在服務器上檢查這些值可能是一個好主意。誠實地說,讓表單按預期工作並讓它更新數據庫似乎是一個更好的主意。您保存的少量處理不需要維護您想要檢查值的任何系統。 – 2011-12-28 21:32:11

+0

感謝您的更好解釋 – Peeyush 2011-12-29 18:37:21

2

如果您使用的是TextBox控件,則有一個選項是使用TextChanged事件來檢測更改。

1

如果您的對象的大小不是很大,則您應該轉到第二個選項,因爲您必須在比較Icustomer的新對象以檢測任何更改之前存儲舊對象。否則,使用javascript檢測文本字段上的更改。但如你所知它不是很可靠。

相關問題