簡體   English   中英

ASP.NET C# 在每一行動態創建帶有回發按鈕的表

[英]ASP.NET C# Dynamically create table with postback button on each row

我正在嘗試顯示從數據庫動態加載的表,並在每行的第一個單元格中使用動態創建的按鈕。 每個按鈕都分配了 ROW_ID 值,該值在一個“通用”方法處理程序中唯一標識按鈕。

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

需要注意的一件事:我正在使用自定義呈現用戶控件來顯示數據庫中的結果集(雖然它看起來像一個表格)。 我沒有將 DataGridView 與 DataBinding 一起使用。

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

問題是:有什么更好的方法可以做到這一點? 我錯過了什么嗎? 我發現很難相信 ASP.NET 處理這個通用用例會如此麻煩。

感謝您提供任何可能的建議。

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

Button (ID=static_button_id) 是派生的經典按鈕,通過 style="display:none;" 隱藏在頁面上並單擊調用自定義處理程序(在初始化/加載階段分配)。 它派生為繞過參數的回發驗證。

要在 .NET 處理程序中檢索參數 (row_id),我使用: string passedArgument = Request.Params.Get("__EVENTARGUMENT");

它正是我需要的,但它有點臟。 如果有人提供干凈的方法來做到這一點,我仍然會很感激。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM