2つの異なるイベントを処理する新しいイベントハンドラーを作成します。1つは、新しいドキュメントを保存するためのものです。もう1つは、編集を保存するためのものです。
これをPage_loadに追加しました:
if (Request.QueryString["ExhibitID"] != null)//new
{
if (!IsPostBack)
{
ddlCaseFiles.DataSourceID = "dsCaseFiles";
ddlCaseFiles.DataTextField = "Display";
ddlCaseFiles.DataValueField = "FileID";
rbByFileID.Checked = true;
rbMyFiles.Checked = false;
ddlCaseFiles.DataBind();
editExhibit(int.Parse(Request.QueryString["ExhibitID"]));//new
exhibitHeader.InnerText = "Edit Exhibit";
}
hidSavedExhibitID.Value = Request.QueryString["ExhibitID"];
saveExhibitBtn.Click += new EventHandler(this.btnUpdateExhibit_Click);
}
else
{
saveExhibitBtn.Click += new EventHandler(this.saveExhibitBtn_Click);
}
なんらかの理由でsaveメソッドがループし続け、2回目に実行すると、最初の保存後にリセットしてからデータがないため、クラッシュします。なぜsaveメソッドが2回実行されているのかわかりません。
これは私の保存方法です:
protected void saveExhibitBtn_Click(object sender, EventArgs e)
{
hidSavedExhibitID.Value = null;
int newExhibitID = saveExhibit();
int propertyID = autoCreateProperty(newExhibitID);
linkExhibitAndProperty(newExhibitID, propertyID);
SaveInfoIntoSessionVariables();
ClearFormFields();
}
「saveExhibit()」メソッドは、実際にDBにアクセスしてすべてを保存する場所です。正常に動作します。