2009-12-03 81 views
0


當GridView的行處於編輯模式時,文本框不顯示當前值

1)I注意到,如果我們不結合的GridView對象數據源控制,則當用戶將GridView的進入編輯模式,我們必須處理GridView.RowEditing事件(否則我們會得到一個異常),並且在這種情況下,GridView的行會進入編輯模式。是否有理由爲什麼GridView不會自動將一行放入編輯模式?


2)當我們手動綁定GridView控件DataSet中的一個表和用戶將一行到編輯模式,行的列將取代使用文本框字段。但由於某些原因,這些文本框並不顯示當前字段值,而是根本不顯示任何文本。我究竟做錯了什麼?


3)我也處理gridView.RowUpdated事件,所以我可以把排回非編輯模式,但沒有效果。我甚至嘗試通過按其他行的編輯按鈕,但行仍然不會退出編輯模式。任何想法我做錯了什麼?

protected void gvwEmployees_RowUpdated(object sender, GridViewUpdatedEventArgs e) 
{ 
    e.KeepInEditMode = false; 
} 


感謝名單

回答

1

如果不使用DataSource控制與隱藏的複雜GridView或其他數據綁定控制的手動數據綁定必須手動處理RowEditingRowUpdating,和RowDeleting等。隨着內置的數據模型和自動綁定GridView爲您處理這些事件。

您還沒有發佈你的RowEditing代碼,但我懷疑你是不是在GridView的EditIndex設置爲NewEditIndex,而不是重新綁定,這可能是爲什麼您沒有看到當前數據。

protected void gvwEmployees_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    GridView.EditIndex = e.NewEditINdex; 
    BindData(); 
} 

您的RowUpdating事件也是如此。您將不得不手動更新數據,然後將EditIndex設置爲-1,這將使您的GridView回到ReadOnly模式。請注意,e.OldValuese.NewValuesGridViewUpdateEventArgs的e.Keys屬性在手動綁定時未填充。這意味着您必須使用編輯行的索引e.RowIndex來親自處理更新。

protected void gvwEmployees_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridView.EditIndex = -1; 
    BindData(); 
} 
+0

A)爲什麼當GridView改變模式回到只讀模式時,你必須重新綁定?我想如果GridView啓用了ViewState,那麼它將能夠從ViewState?恢復字段值(只讀模式)! B)同樣,爲什麼當我們將GridView放入編輯模式時,它是否必須重新綁定到數據源?難道它不能將值從只讀模式並將其應用於編輯模式下的字段? 「RowUpdating事件也是如此。您將不得不手動更新數據,然後將EditIndex設置爲-1,這將使您的GridView重新進入ReadOnly模式。「我試過了,但沒有任何反應 – carewithl 2009-12-03 19:31:27

相關問題