4

当我的页面加载时,它会在数据库中查询一些值并用它们填充一些文本框:

protected void Page_Load(object sender, EventArgs e)
{
    tadbDataContext tadb = new tadbDataContext();
    Dictionary<string, string> hexColors = tadb.msp_silentAuctionColors.ToDictionary(t => t.colorDescription, t => t.colorValue);

    tbTextColor.Text = hexColors["textColor"];
    tbAltColor.Text = hexColors["altColor"];
    tbBackgroundColor.Text = hexColors["backgroundColor"];
}

然后我更改值并尝试通过单击执行以下操作的按钮重新提交到数据库:

using (tadbDataContext tadb = new tadbDataContext())
{
    var textColor = tadb.msp_silentAuctionColors.Single(x => x.colorDescription == "textColor");

    var altColor = tadb.msp_silentAuctionColors.Single(x => x.colorDescription == "altColor");
    var backgroundColor = tadb.msp_silentAuctionColors.Single(x => x.colorDescription == "backgroundColor");

    textColor.colorValue = tbTextColor.Text;
    altColor.colorValue = tbAltColor.Text;
    backgroundColor.colorValue = tbBackgroundColor.Text;

    tadb.SubmitChanges();
}

回发的值是原始(不是更改的)值。如果我注释掉加载时填充文本框的行,它可以正常工作。

4

1 回答 1

3

那是因为您没有将数据绑定内容包装在IsPostBack-check in 中Page_Load。因此,您总是用数据库中的旧值覆盖更改的值。

所以你只需要这样做:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        tadbDataContext tadb = new tadbDataContext();
        Dictionary<string, string> hexColors = tadb.msp_silentAuctionColors.ToDictionary(t => t.colorDescription, t => t.colorValue);

        tbTextColor.Text = hexColors["textColor"];
        tbAltColor.Text = hexColors["altColor"];
        tbBackgroundColor.Text = hexColors["backgroundColor"];
    }
}
于 2012-09-07T23:32:27.300 回答