2010-10-29 44 views
1

我有一個gridview充滿了電話號碼。爲了填充gridview,我將gridview的數據源綁定到電話號碼列表中。我在頁面首次加載時執行此操作,但不是在回發時執行此操作。ASP.NET,回發後綁定到什麼數據網格?

我希望用戶能夠刪除一些電話號碼,然後,如果他們想要,點擊保存按鈕,這將更新數據庫,否則他們的更改將被忽略。所以我在網格中有一個按鈕,並且會觸發一個事件,我可以調用DeleteRow(行索引)並從該事件中刪除該行。出於某種原因,這是行不通的。

我在Internet上找到的所有gridview示例都通過調用sql函數立即執行刪除操作,然後重新綁定。並且一些示例在每次加載頁面時綁定網格,這似乎效率低下。

我的問題是: 刪除按鈕導致回發到服務器。回發時,電話號碼列表不再存在。而gridview的數據源爲空。網格不再受限制。但是必須有數據存在,因爲網格中的數據仍然是可見的。這個數據在哪裏,我可以刪除它的一行,以便GridView中的一行被刪除?

回答

2

的視圖狀態保存DataGrid的內容,所以答案爲「The Viewstate

瞭解視圖狀態是至關重要的瞭解ASP.NET是如何工作的,因此而不是僅僅發佈足夠的信息來回答你的問題,我我會推薦你​​閱讀我鏈接到的整篇文章。

+0

謝謝!這個鏈接是一個很好的閱讀。我檢查過回發時沒有綁定,並且在調用deleterow之後調用saveviewstate。我注意到當我調用DeleteRow時,網格中的行數是前後相同的。我應該在其中一個刪除事件中做些什麼? – 2010-10-30 09:45:18

0

您可以使用jquery,您需要將每個已刪除行的Datakey值保存在隱藏字段 中並隱藏所選行,並且當用戶單擊保存時,您可以根據隱藏字段值。

+1

我強烈建議在這種情況下避免使用JQuery。並不是說jQuery無法做到這一點,但自.NET 1.1天以來,datagrid一直存在,並且所有回發數據都存儲在ViewState中(除非ViewState已被關閉以進行控制)。這就是說。jQuery不能訪問ViewState數據。 – ewitkows 2010-10-29 19:48:07

+0

對於本示例和所有具有相同場景的示例,最好使用客戶端資源,導致用戶不確定是否完全移除行。用戶點擊保存按鈕後,現在可以在後面的代碼中執行刪除過程,因此我建議使用隱藏字段來實現該場景。 – arlen 2010-10-29 22:12:28