0

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にアクセスしてすべてを保存する場所です。正常に動作します。

4

1 に答える 1

2

Page_Loadでデータを再バインドするためです。

ViewStateを使用してデータを永続化する必要があります。EnableViewState="true"

で、データを1回だけバインドします! IsPostBack。選択した値を消去しないため

If(! IsPostBack)
{

   //Bind your datas with `DataBind()`
}
于 2012-09-25T18:51:48.470 に答える