Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文本框值未更新_C#_.net_Asp.net_Textbox - Fatal编程技术网

C# 文本框值未更新

C# 文本框值未更新,c#,.net,asp.net,textbox,C#,.net,Asp.net,Textbox,我使用以下DropDownList事件从MS SQL Server 2005中选择一名员工,并在文本框中显示该员工的信息 protected void employeeDropDownList_SelectedIndexChanged(object sender, EventArgs e) { EmployeeDAL employeeDAL = new Emplo

我使用以下DropDownList事件从MS SQL Server 2005中选择一名员工,并在文本框中显示该员工的信息

protected void employeeDropDownList_SelectedIndexChanged(object sender,
                                                                EventArgs e)
{
   EmployeeDAL employeeDAL = new EmployeeDAL();
   DataTable dataTable = employeeDAL.GetEmployeeData();
   for (int i = 1; i <= dataTable.Rows.Count; i++)
    {
      if (Convert.ToInt32(employeeDropDownList.SelectedValue) == i)
      {
        nameTextBox.Text = dataTable.Rows[i-1]["employee_Name"].ToString();
        useNameTextBox.Text=dataTable.Rows[i-1]["employee_UserName"].ToString();
        addressTextBox.Text=dataTable.Rows[i-1]["employee_Address"].ToString();
        break;
       }
     }
 }

但问题是。。。文本框的值不变。我的意思是文本框保留了以前在employeeDropDownList\u SelectedIndexChanged事件中分配的值。但是为什么呢?现在该怎么办?

在更新文本字段之前,正在执行按钮单击,请在两个EventHandler中放置断点。在文本框和你的dao对象上放一块手表,看看当你发回时它们是如何更新的。我真的不认为这是一个数据问题,但不要完全忽视它,至少在我看来,这是asp.net在回发之间缓存文本框值的问题。

在更新文本字段之前执行按钮单击,在两个事件处理程序中都设置断点。在文本框和你的dao对象上放一块手表,看看当你发回时它们是如何更新的。我真的不认为这是一个数据问题,但不要完全忽视它,至少在我看来,这是一个asp.net在回发之间缓存文本框值的问题。

好吧,因为我们没有实现您的EmployeeDAL类,所以很难确切知道问题是什么。以下是我要检查的几件事:

  • 确保GetEmployeeData函数没有在内部实现一些缓存
  • 检查UpdateEmployee函数以验证它是否确实提交到数据库。有时更新函数只会更改内存中的内容,而实际上有一个不同的函数将这些更改提交到存储
  • 在您的employeeUpdateButton\u单击函数,再次检查您正在设置的EmployeeID属性值
  • 运行SQL事件探查器以查看T-SQL到底在数据库中运行了什么

  • 好吧,因为我们没有实现你的EmployeeDAL类,所以很难确切地知道问题是什么。以下是我要检查的几件事:

  • 确保GetEmployeeData函数没有在内部实现一些缓存
  • 检查UpdateEmployee函数以验证它是否确实提交到数据库。有时更新函数只会更改内存中的内容,而实际上有一个不同的函数将这些更改提交到存储
  • 在您的employeeUpdateButton\u单击函数,再次检查您正在设置的EmployeeID属性值
  • 运行SQL事件探查器以查看T-SQL到底在数据库中运行了什么

  • 好的,最后我得到了答案,但我无法解释。对于DropdownList,我使用了以下代码:


    罪魁祸首是这起超载事件。当我在没有这个OnLoad事件的情况下运行应用程序时,我的问题就解决了。有人能解释一下这个加载事件的错误吗?

    好的,最后我得到了答案,但无法解释。对于DropdownList,我使用了以下代码:



    罪魁祸首是这起超载事件。当我在没有这个OnLoad事件的情况下运行应用程序时,我的问题就解决了。有人能解释一下这个OnLoad事件的错误吗?

    我没有使用任何文本更改事件。那么,我将如何在文本事件中设置断点?如何调用Text_Changed事件?我在ViewState中没有更改任何内容。我在文本框中没有回发设置。谢谢。我认为没有必要在这里使用onTextChange事件。因为我正在单击按钮将文本框文本分配到属性中。抱歉,我已经连续工作了26个小时,我将参考正确的事件处理程序编辑我的答案。非常感谢您的耐心。我没有使用任何文本更改事件。那么,我将如何在文本事件中设置断点?如何调用Text_Changed事件?我在ViewState中没有更改任何内容。我在文本框中没有回发设置。谢谢。我认为没有必要在这里使用onTextChange事件。因为我正在单击按钮将文本框文本分配到属性中。很抱歉,我已经连续工作了26个小时,我将参考正确的事件处理程序编辑我的答案。非常感谢您的耐心。GetEmployeeData()功能工作正常,并在文本框上显示数据。UpdateEmployee()函数也正常工作。我调试了它们。在employeeUpdateButton中,单击事件EmployeeID值是否正确。文本框中的值未更新,因此数据库正在使用以前的值更新。是否在文本框中启用了ViewState?我为页面启用了EnableViewState=“True”。谢谢,但是单个控件可以通过覆盖页面级别设置来选择退出。所以你应该仔细检查你的控制。也许您可以将文本框的ASPX定义添加到问题中。GetEmployeeData()功能工作正常,并在文本框上显示数据。UpdateEmployee()函数也正常工作。我调试了它们。在employeeUpdateButton中,单击事件EmployeeID值是否正确。文本框中的值未更新,因此数据库正在使用以前的值更新。是否在文本框中启用了ViewState?我为页面启用了EnableViewState=“True”。谢谢,但是单个控件可以通过覆盖页面级别设置来选择退出。所以你应该仔细检查你的控制。也许你可以在你的问题中添加文本框的ASPX定义。我错过了代码部分,但在这里给出了正确的答案。这正是我在最后一次评论(在我的答案下面)中所说的。在回发过程中,在employeeUpdateButton_单击之前,有些东西正在运行。OnLoad事件首先运行,这样就清除了用户输入的新值。在OnLoad运行之后,您的employeeUpdateButton\u Click运行了,但那时已经太晚了。新的价值观已经形成
    protected void employeeUpdateButton_Click(object sender, EventArgs e)
    {
       EmployeeDAL employeeDAL = new EmployeeDAL();
       EmployeeDAO employeeDAO = new EmployeeDAO
                             {
                          EmployeeID = Convert
                                      .ToInt32(employeeDropDownList.SelectedValue),
                          Name = nameTextBox.Text,
                          Username = useNameTextBox.Text,
                          Address = addressTextBox.Text,
                             };
    
            employeeDAL.UpdateEmployee(employeeDAO);
     }