2013-04-11 135 views
0

我有一個表,我正在編程創建,然後在CreateChildControls()方法中添加一些行和數據到它。它有2列與dropdownlist控件在它。現在基於選擇的客戶端在下拉列表中,我通過複製最後一行的內容來添加更多行。有一個保存按鈕,當它被點擊時調用webpart的下面的重寫函數來獲取表格對象。問題是我添加的行在客戶端沒有被檢索..只有在服務器端創建的行最初被檢索。可以有人告訴我,我在這裏做錯了什麼。以編程方式獲取表控件

這樣做Table Tab = FindControl(「Main1」)爲Table; tab.rows只得到3,其最初在服務器上生成,並且不包括被創建客戶端上的2個新的

Public Override Control FindControl(string id) 

{ 

return base.FindControl(id); 

} 

回答

1

任何行添加客戶端將不會被傳遞到服務器 - 是這樣地技術在其中工作。更好的方法是使用保存按鈕生成PostBack並在服務器上添加新行。

如果新行必須添加到客戶端,那麼在添加客戶端之後,您需要編寫ajax調用以將新行添加到viewstate服務器端 - 看起來像很多工作PostBack應該是完全足夠的。

0

我相信服務器端添加的控件存儲在ViewState中,而客戶端DOM更改不會影響到這一點。在您的表格和下拉列表中添加UpdatePanel並添加服務器端的行對於您和最佳用戶體驗來說可能是最簡單的。

+0

然後,如果我禁用該表的視圖狀態,那麼它不應該知道它包含的行和數據的權利..我雖然嘗試過,但它不起作用。 – user505210 2013-04-11 14:16:33

+0

不,這是行不通的。你一定需要ViewState。您是否嘗試過UpdatePanel解決方案? – 2013-04-11 14:32:17