DetailsView1の変更をDBにコミットする前に、DetailsView2の項目が0であることを確認します。しかし、私はエラーを報告し、ユーザーが編集を続行できるようにしたいだけです。現在、DetailsView1で[更新]をクリックすると、ページが消去されます。ここでウィザードの一部としてDetailsView更新をキャンセルすると、フォームがクリアされるのはなぜですか?
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">
...
これらの両方のDetailViewsは、ウィザードの一部ですが、私は何の違いを作ることかどうか分かりません。
通常、これはポストバック時のデータバインディングの問題が原因です。データのバインド方法を見てみましょう。これは、form_loadイベントで失われている可能性があります。ブレークポイントを追加して、データが各ポストバックに適切にバインドされていることを確認します。 – tgolisch