我想确保详细信息中的项目等于0,然后再将详细信息Viefieview1的任何更改。但是我只想报告一个错误,并允许用户继续编辑。当前,单击详细信息中的"更新"清除页面。
这是背后的代码:
protected void DetailsView1_Updating(object sender, DetailsViewUpdateEventArgs e)
{
if (DetailsView2.Rows[0].Cells[1].Text != "0")
{
DetailsView2.Rows[1].Cells[1].Visible = true; // Display error message
e.Cancel = true;
}
}
这是前端:
<asp:DetailsView
ID="DetailsView1"
runat="server"
AutoGenerateRows="False"
DataSourceID="ObjectDataSource1"
DefaultMode="Edit"
OnItemUpdating="DetailsView1_Updating">
...
这两个详细信息都是向导的一部分,但我不确定这有任何区别。
事实证明,在itemcommand事件上有一个侦听器清除了该表格旨在编辑的对象的ID。由于在向导中选择一个新对象时,该ID无论如何都会被覆盖,因此我只是删除了该逻辑。现在,数据在验证后停留在适当的位置,以便在验证失败时可以修复。
对于它的价值,我通过在CodeBehind中的每个方法上设置一个断点并观看命令流来找到错误的事件处理程序。