带有UserControls的嵌套FormView,事件未正确触发

时间:2013-02-01 18:16:17

标签: asp.net gridview user-controls nested formview

我正在重新编写一个非常复杂的表单。此表单有多个子表单。最初的化身是创建所有这些隐藏的面板(没有我的设计,我正在努力解决的问题)。

我最终得到的是一个FormView,其中编辑模式由一个典型的表单组成,并且有一个子表单。现在,子窗体在ReadOnly模式下显示GridView,它与回调编辑方法相关联,该方法将子窗体的索引更改为正确的索引并将其更改为编辑模式。这些数据的所有数据都是通过SqlDataObjects。

为简化过程,我将子窗体放入usercontrol中,并在主窗体的Edit和ReadOnly部分中包含用户控件。因此,当主窗体是ReadOnly时,它会显示usercontrol的默认模式,即ReadOnly,从而显示网格。这部分很好用。

当用户在“编辑”模式下打开主窗体时,子窗体将按照预期以网格模式显示(并且网格中包含“编辑”按钮的列将呈现为可见)。这样也可以。

当我单击编辑按钮并将表单更改为编辑模式时,一切都按预期工作。我可以看到通过mainform到子窗体的流程(通过调试)正如预期的那样。

现在,当我单击更新按钮时,这只是一个设置了CommandName的简单LinkBut​​ton(就像其他表单视图一样有效)我注意到回调转到子表单(跳过主表单的数据绑定 - 这也是期望的但是更新调用永远不会呈现给SqlDataObject。

我的每个SqlDataObjects都有一个OnUpdating / OnInserting / OnSelecting,仅用于调试目的,它从未被命中。在回发后,用户控件直接进入ReadOnly模式。我不认为这是一个DataBinding问题。

有人用嵌套表单控件看过这个吗?具体来说,userControls容纳FormView嵌套在FormView?

我不会丢弃整个UserControl,只是将子表单直接放在mainform中,但我宁愿知道正确的解决方案,直到它工作...

1 个答案:

答案 0 :(得分:0)

似乎处理来自嵌套表单视图的回调需要将其视为动态控件,即使它是模板的一部分。当子窗体强制进入编辑模式时(通过将其设置为默认值),它会按预期处理回发。当它保持默认设置时,它无法按预期处理回发。

我想提供一些示例代码,我可能会在以后这样做(这就是为什么我假设我在发布后的一分钟内得到-1)但似乎没有功能样本关于嵌套表格的任何地方(无论如何都有效的样本)。

简短的解决方法是将第二种形式放在第一种形式的范围之外(但仍在同一个用户控件中),然后进行一些回调以进行变化检测。

话虽如此,如果你有一个表格,他们的b