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 生成的代码,您会发现一些隐藏字段,其中之一是“视图状态”。视图状态保存您的 asp 的重要值,以便能够在每次加载页面时填充元素,即使是在回发之后。

于 2012-10-15T10:27:57.147 回答
0

数据在回发期间被维护,因为您在回发期间不清除数据,或者在加载时它会持续存在。

于 2012-10-15T10:28:45.803 回答