-1

我正在尝试显示从数据库动态加载的表格,并在每行的第一个单元格中使用动态创建的按钮。每个按钮都分配了 ROW_ID 值,该值唯一地标识一个“通用”方法处理程序中的按钮。

据我所知,我能做到这一点的唯一方法是在初始化生命周期阶段加载数据并显示它并将按钮连接到处理程序。我面临的问题是,当此按钮(例如出于目的)要为该特定行调用数据库中的删除(或其他修改)过程时,我必须执行 Response.End 并重新加载页面以反映此修改,因为在 PostBack 处理程序期间,从 DB 重新获取新数据集并创建新的按钮集并将其连接到处理程序已经太晚了。整页重新加载但是丢失所有控件的状态,这是不可取的。

需要注意的一件事:我正在使用自定义呈现用户控件来显示来自数据库的结果集(虽然它看起来像一个表格)。我没有将 DataGridView 与 DataBinding 一起使用。

可能的解决方案是为每一行使用单选按钮,并在底部使用一个静态按钮,但这远非理想。

问题是:有什么更好的方法来做到这一点?我错过了什么吗?我很难相信 ASP.NET 处理这种通用用例会如此麻烦。

感谢您提供任何可能的建议。

4

1 回答 1

0

我最终得到的解决方案是在每行的虚拟按钮上使用基于 JavaScript 的 __doPostBack('static_button_id', 'row_id')。它生成带有参数的回发,该参数标识发生此回发的行。

按钮 (ID=static_button_id) 是派生的经典按钮,通过 style="display:none;" 隐藏在页面上 并单击调用自定义处理程序(在初始化/加载阶段分配)。它的派生是为了规避参数的回发验证。

要在 .NET 处理程序中检索参数 (row_id),我使用: string passedArgument = Request.Params.Get("__EVENTARGUMENT");

它完全符合我的需要,但有点脏。如果有人提供干净的方法来做到这一点,我仍然会很感激。

谢谢。

于 2012-09-12T10:25:02.497 回答