DataGrid按钮 - 无效的回发或回调

时间:2010-08-06 02:30:46

标签: asp.net datagrid button postback render

我已经设置了一个DataGrid,其中包含许多列以及行末的复选框和列。

我还在OnItemCreated事件上更改数据网格的布局,通过扩展具有“Rowspan”属性的行来更改数据网格的布局,并删除额外的列并控制它们不再需要的位置

原始数据网格布局设置如下:

___________________________________________
| 1 | Employee Name | 01/08/10 |[] |[SAVE]|
| 1 | Employee Name | 02/08/10 |[] |[SAVE]|
___________________________________________
| 2 | Employee Name | 01/08/10 |[] |[SAVE]|
___________________________________________
| 3 | Employee Name | 04/08/10 |[] |[SAVE]|
| 3 | Employee Name | 05/08/10 |[] |[SAVE]|
| 3 | Employee Name | 06/08/10 |[] |[SAVE]|
___________________________________________
| 4 | Employee Name | 03/08/10 |[] |[SAVE]|
___________________________________________

现在它看起来像扩展了行,删除了控件并删除了datagrid列......

___________________________________________
| 1 | Employee Name | 01/08/10 |[] |[SAVE]|
|   |               | 02/08/10 |   |      |
___________________________________________
| 2 | Employee Name | 01/08/10 |[] |[SAVE]|
___________________________________________
| 3 | Employee Name | 04/08/10 |[] |[SAVE]|
|   |               | 05/08/10 |   |      |
|   |               | 06/08/10 |   |      |
___________________________________________
| 4 | Employee Name | 03/08/10 |[] |[SAVE]|
___________________________________________

打开时会显示页面,每次用户点击页码时,页面控件都会按预期工作。

但是,当我单击特定员工的[保存]按钮时,错误消息会显示类似“无效回发或回拨”的消息。我知道这是我在datagrid中删除的控件和列的结果,并且事件验证与orignal呈现的项目不匹配。

我不想删除EnableEventValidation,因为这是一个安全问题。

我知道我必须使用Render方法来修复在页面显示之前所做的任何更改,但是如何解决此回发问题?

1 个答案:

答案 0 :(得分:0)

好的,让我们看看错误来自哪里。

GridView使用__DoPostBack()javascript调用,并且没有他自己的输入。因此,他自己不会从其他单元格发送任何输入数据。

现在我认为您没有进行自定义DoPostBack调用 - 对吗?

验证的第二点是ViewState数据。

是否可以通过任何更改使用任何UpdatePanel,并在中间进行任何更改以更改此ViewState?

我建议您尝试在GridView上发送 EnableViewState =“false”以查看是否仍然出现此错误。这不会影响您,因为每次更新中的GridView都会重新读取需要创建的数据。

您需要检查的第二点是您更改数据并影响视图状态。也许把它放在其他地方解决问题。例如,如果你在Page_Load上有它,你可能需要在PageInit上移动它 - 或者反之亦然。

希望得到这个帮助。