0

次のコードがあります。これは、いくつかのテキストフィールドとドロップダウンに基づいて、データベースにレコードを挿入するだけです。ドロップダウンは、ページ読み込みイベントでバインドされます。

protected void btnAdd_Click(object sender, EventArgs e)
{
    try
    {
        Personeel p = new Personeel();
        p.achternaam = txtNaam.Text;
        p.naam = txtVoornaam.Text;
        p.fk_afdeling_id = Convert.ToInt16(cmbAfdeling.SelectedValue);

        BLLpersoneel BLLp = new BLLpersoneel();
        BLLp.insert(p);
        lblFeedback.Text = "Done and done!";
        rptPersoneel.DataBind();
    }
    catch (Exception err)
    {
        lblFeedback.Text = err.Message;
    }
}
protected void Page_Load(object sender, EventArgs e)
{
    if(Page.IsPostBack == false)
    { 
    BLLafdeling BLLa = new BLLafdeling();
    cmbAfdeling.DataSource = BLLa.selectAll();
    cmbAfdeling.DataTextField = "naam";
    cmbAfdeling.DataValueField = "afdeling_id";
    cmbAfdeling.DataBind();
    }
}

私の質問はIsPostBackについてです。最初の読み込み時に、ページにはPostBackがないため、データをドロップダウン「cmbAfdeling」にバインドします。

次に、フォームを送信するときにポストバックがあるため、ifステートメント内のコードに到達しません。私にとって、それはASP.NETがデータをコンボボックスにバインドしないことを意味します。

ただし、データは送信後も存在します(したがって、ポストバックがあります)。

これはどのように説明されますか?

4

3 に答える 3

2

これはによるものViewStateです。のデータComboBoxはに保存され、ViewStateポストバック中に前後に送信されます。

これは、何が起こっているのかを理解するために読む価値があるかもしれません:http: //msdn.microsoft.com/en-us/library/ms972976.aspx

于 2012-10-15T10:28:51.780 に答える
1

これは、 viewstateと呼ばれる概念によって説明されます。

aspによって生成されたコードを調べると、いくつかの非表示フィールドが見つかります。そのうちの1つが「ビューステート」です。ビューステートは、ポストバック後であっても、ページが読み込まれるたびに要素を設定できるように、aspの重要な値を保存します。

于 2012-10-15T10:27:57.147 に答える
0

ポストバック中またはロード時にデータをクリアしないとデータが保持されるため、データはポストバック中に維持されます。

于 2012-10-15T10:28:45.803 に答える