2012-09-12 35 views
-1

我試圖在每行的第一個單元格中顯示一個動態創建的按鈕從數據庫動態加載的表格。每個按鈕都分配了ROW_ID值​​,用於唯一標識一個「通用」方法處理程序中的按鈕。ASP.NET C#在每一行上動態創建包含回發按鈕的表格

就我所能理解的,我可以做到這一點的唯一方法是在Init生命週期階段通過加載數據並將其顯示給處理程序。我面對的問題是,當這個按鈕(例如目的)在數據庫中調用delete(或其他修改)過程時,我必須執行Response.End並重新加載頁面以反映此修改,因爲在PostBack處理程序期間,從數據庫重新獲取新數據集並創建一組新按鈕並將其連接到處理程序已經太晚了。然而,整頁重新加載所有控件的損失狀態,這是不可取的。

有一點需要注意:我正在使用自定義渲染用戶控件來顯示數據庫的結果集(儘管它看起來像一張表)。我沒有在DataBinding中使用DataGridView。

可能的解決方案是使用每行的單選按鈕和底部的一個靜態按鈕,但這遠非理想。

問題是:有什麼更好的方法來做到這一點?我錯過了什麼嗎?我發現很難相信ASP.NET在處理這種通用用例方面很麻煩。

感謝您的任何建議。

回答

0

我最終解決的解決方案是在每個行的虛擬按鈕上使用基於JavaScript的__doPostBack('static_button_id','row_id')。它使用參數生成回發,該參數標識發生此回發的行。

按鈕(ID = static_button_id)是通過style =「display:none;」隱藏在頁面上的派生古典按鈕。並點擊調用自定義處理程序(在初始化/加載階段分配)。它的派生是爲了規避參數的回傳驗證。

在.NET處理程序中檢索參數(row_id)我使用: 字符串passedArgument = Request.Params.Get(「__ EVENTARGUMENT」);

它確實是我需要的,但它有點髒。如果有人提供了乾淨的方式來做到這一點,我仍然會很感激。

謝謝。

相關問題