我已经设置了一个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方法来修复在页面显示之前所做的任何更改,但是如何解决此回发问题?
答案 0 :(得分:0)
好的,让我们看看错误来自哪里。
GridView使用__DoPostBack()javascript调用,并且没有他自己的输入。因此,他自己不会从其他单元格发送任何输入数据。
现在我认为您没有进行自定义DoPostBack调用 - 对吗?
验证的第二点是ViewState数据。
是否可以通过任何更改使用任何UpdatePanel,并在中间进行任何更改以更改此ViewState?
我建议您尝试在GridView上发送 EnableViewState =“false”以查看是否仍然出现此错误。这不会影响您,因为每次更新中的GridView都会重新读取需要创建的数据。
您需要检查的第二点是您更改数据并影响视图状态。也许把它放在其他地方解决问题。例如,如果你在Page_Load上有它,你可能需要在PageInit上移动它 - 或者反之亦然。
希望得到这个帮助。