我在表单上有几个“ASP:TextBox”控件(大约20个)。
加载表单时,将从数据库中填充文本框。
用户可以更改填充的值,当他们提交表单时,我将发布到服务器的值并有条件地保存它们(由某些业务逻辑确定)。
除了1个文本框之外的所有文本框都按预期工作。

在回发时,奇数框输出不包含用户在框中键入的更新值。
调试应用程序时,很明显myTextBox.Text反映了旧的预填充值,而不是新的用户提供的值。
每个其他框都正确显示其各自的用户提供的值。

我确实找到了解决方法。
我的解决方案是基本上从Request.Form对象中提取文本框的值: Request.Form[myTextBox.UniqueID] ,它确实包含用户提供的值。

可能会发生什么,这里?
正如我所提到的,其他文本框接收用户提供的值就好了,这个特殊问题的文本框没有任何与之关联的逻辑 - 只需要获取值并保存它。
这个文本框和其他文本框之间的主要区别在于这是一个多行框(用于输入注释),我认为它在ASP.NET中呈现为HTML“textarea”标记而不是“输入”标记。

===============>>#1 票数:8 已采纳

你最初只是在加载数据的时候!Page.IsPostBack? 此外,是否为文本框启用了视图状态?

===============>>#2 票数:6

这种情况一直发生在我身上。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // populate text boxes from database
    }
}

===============>>#3 票数:2

我想第二个Jonathan的回答我会检查你的数据绑定设置。

如果你不需要ViewState用于文本框(即在表单提交之前没有回发),那么你应该禁用它。

听起来你没有保存数据的问题(因为你说你已经设法让控件读回正确的数据)。 因此,我会说你的数据绑定代码加载问题。

===============>>#4 票数:1

记住页面生命周期的顺序,以及数据绑定表单的位置。

  • PreInit
  • 在里面
  • 加载
  • 您的控制事件处理程序

如果您正在读取控件事件处理程序中的值,但在Init或Load中进行数据绑定,则您将获得旧值。

诀窍是始终在正确的事件中数据绑定,或检查回发,然后不进行数据绑定。

===============>>#5 票数:1

你最初只是在加载数据的时候!Page.IsPostBack? 此外,是否为文本框启用了视图状态?

我几乎忘了检查ViewState,但最后记得在SO上发帖之前验证它没有被禁用。 我甚至设置EnableViewState =“true”来确保。

我确实找到了解决方案,这与这里的大部分答案相吻合。 表单确实不止一次加载其数据(这是故意行为)。 我为这个领域实现了一些特殊的代码,一切都很好。

谢谢你的回复,全部!

  ask by Darren Steinweg translate from so

未解决问题?本站智能推荐:

3回复

C#asp.net检查文本框是否包含空格

我试图防止用户将文本框留空,并且使用以下代码对我有用: 但是现在我想防止输入空格,我在下面尝试了以下代码,但并没有阻止它: 还有其他防止进入空间的方法吗?
4回复

使用C#将文本框中的数据写入ASP.net中的文本文件

我有一个文本框,用户可以在其中输入他们的电子邮件,我想要做的是在单击提交按钮时创建它。 该电子邮件将保存到一个名为emails.txt的文本文件中(在我的服务器上)。 我设法使用System.IO,然后使用File.WriteAll方法使此工作正常。 但是我想这样做,以便它将电子邮件添
3回复

将数据从文本框中保存到sql数据库asp.net C#

我已经尝试了很多方法将文本框文本保存到SQL数据库中。 我只想将文本框中的一些文本保存到SQL数据库中。 我使用的是Microsoft Visual Studio 2010和C#编程语言。 这是我目前的代码: protected void BtnSave_Click(object sen
1回复

使用asp.net C#根据我的数据集填充我的文本框

我想根据我的数据集填充文本框。 DAL BLL PL 我收到一个错误: 无法将类型'System.Data.DataSet'隐式转换为'string' 当我填充文本框时,我需要从数据集中获取特定值,并且该值应该是客户参考。 但是我看不到我在做什么
1回复

在页面重新加载ASP.Net c#之前保存文本框中的数据

我从文本框中保存数据时遇到了一些问题,这样当页面重新加载数据时就不会进入虚空状态。 场景:在页面加载时,一些数据从SQL表中提取并显示在TextBoxes和GridView中。 现在,当客户端点击一个按钮时,一些不同的日期会被加载到TextBox和GridView中。 最后,客户端单击
2回复

在onblur文本框事件asp.net C#上查询数据库

我想在文本框的onblur事件上查询数据库。 我想简单的是,当我在第一个文本框中输入ID并在发生onblur事件之后,数据库中各个ID的名称显示在另一个文本框或标签中。
1回复

在Gridview的templatefield内将数据绑定到文本框»C#和ASP.NET

如何将数据绑定到位于gridview的templatefield中的文本框? 我想使用ExecuteScalar,获取一个值并将其扔到该文本框中。
2回复

C#和ASP.NET Gridview-DB中的文本框数据更新

我有一个大约六列的网格视图,其中一列是一个文本框。 用户可以输入在texbox的值,当他点击提交按钮(这个按钮是不是在GridView内),其单个值必须更新到数据库中。 gridview中的所有其他列将从数据库中检索。 但是这一栏必须更新到数据库中。 用户可以为该可编辑列输入一行或所
3回复

无法专注于C#中的Asp.net文本框

我有一个TextBox,我想在回发后使用代码后面的焦点。 此文本框使用带有Ajax DropDownExtender的ListBox创建ComboBox。 当页面执行PostBack时,我调用tbEquipType.Focus(),但是该框没有成为焦点。 我相信问题出在Ajax控件上,但我
1回复

用一个文本框c#,asp.net构建数组

我需要构建一个允许用户输入100种不同测量值的表格。 然后输入100个不同的权重。 我想使用相同的文本框。 一种用于测量,一种用于重量。 然后让它们存储该值,然后重置以接受下一个值,依此类推。 有人能指出我正确的方向吗? 我已经搜索了一个多小时,却找不到任何东西。 预先感谢您的帮助