如何在ASP.NET中单击eventhandler获取文本框值

时间:2013-05-02 14:50:44

标签: asp.net postback buttonclick

不知何故,我的一个存储过程刚刚从aspx页面停止执行。如果我使用EXEC从SQL Server运行它,它可以工作。但是当我单击我的aspx页面上的一个按钮来分配参数和值,并启动此过程时,页面重新加载但数据不会更新。此按钮可以运行创建或更新过程,具体取决于地址栏中的页面参数。但没有任何执行。

在aspx页面中,我创建了这样的按钮:

<asp:Button id="btnSaveChanges" runat="server" 
     class="class_Button Normal Enabled" 
     OnClick="btnSaveChanges_Click" Text="Save changes" Width="100" />

然后在代码隐藏文件中:

protected void btnSaveChanges_Click(object s, EventArgs e)
{
    //if (Page.IsValid)
    //{ 
        SqlCommand sqlComm1 = new SqlCommand();
        SqlConnection sqlConn1 = new SqlConnection("Server=localhost\\SqlExpress;Database=TestDB;Integrated Security=true");

        sqlConn1.Open();

        if(param_id == 0) 
        {
           sqlComm1 = new SqlCommand("dcspCreateEmpDetails", sqlConn1);
        }

        if(param_id > 0) 
        {
            sqlComm1 = new SqlCommand("dcspUpdateEmpDetails", sqlConn1);
        }

        sqlComm1.CommandType = CommandType.StoredProcedure;

        if (param_id > 0) 
            sqlComm1.Parameters.AddWithValue("@empID", param_id); 

        sqlComm1.Parameters.AddWithValue("@empName1", tbName1.Text);
        sqlComm1.Parameters.AddWithValue("@empSurname", tbSurname.Text);
        sqlComm1.Parameters.AddWithValue("@empBirthDate", Convert.ToDateTime(tbBirthDate.Text));

        sqlComm1.ExecuteNonQuery();
    //}
    sqlConn1.Close();
}

就是这样。页面有效,100%。即使我删除验证检查,也没有结果。

以下是程序:

CREATE PROCEDURE dcspUpdateEmpDetails
    @empID int,
    @empName1 nvarchar(50) = null,
    @empSurname nvarchar(50) = null,
    @empBirthDate datetime = null
AS
    UPDATE Employees 
    SET 
       name_1 = @empName1,
       surname = @empSurname,
       date_of_birth = @empBirthDate
    WHERE (employee_id = @empID)

希望你能帮助我,伙计们。我真的不明白这件事发生了什么......

主题更新:

检查我发现的调试消息,该文本框在OnClick事件中的存储过程将此文本作为参数之前丢失其文本。

服务器首先恢复页面是否真的很正常,之后它才会在OnClick事件中执行代码?我认为这在逻辑上是不正确的,因为Page_Load旨在加载默认页面,而按钮和其他控件用于更改和操作页面的内容。如果他们的代码无法及时执行,为什么我需要这些控件?

1 个答案:

答案 0 :(得分:0)

好的,问题已经解决了。怎么样?我不知道。我拿了我的备份副本并将有关此问题的所有内容复制到我当前的版本。这是完全相同的代码,完全相同的代码。我刚用备份中的相同代码替换了当前代码,现在可以正常工作了。那是什么?我100%知道他们之间没有区别,这是一小段代码。

不幸的是我无法将任何内容标记为答案,因为这里只有评论。我会标记这个。

无论如何,谢谢你们,伙计们。非常感谢Tim对所有事情的关注以及Richard Deeming的建议。