首页 > 解决方案 > asp.net Web 应用程序中的文本框控件存在问题。没有从文本框中获取文本进行更新

问题描述

我有一个表格AdminHome.aspx。当用户登录时,在AdminHome.aspx页面Load事件上,用户配置文件数据从数据库加载并填充相应的Textboxes. 我有一个Button控制权Update User Information。登录后User,这就是它的Home Page样子。这是图片。 在此处输入图像描述

现在,当我将名称从更改INTERNTrainee. 这是图片 在此处输入图像描述 ,然后单击Update My Profile按钮。它显示 no Errorsor Exceptions,而是显示一条消息Record Update Successfully。但是当我在数据库中检查它时,它没有更新。戴上它后debug mood,我才知道它采用了旧值Textboxes,我的意思是我将值Designation从更改为INTERNTRAINEE但仍然采用它INTERN。这是图片 在此处输入图像描述 以下是我的update Button代码

        protected void btnUpdateProfile_Click(object sender, EventArgs e)
    {
        try
        {
                UpdateUser();
        }
        catch (Exception ex)
        {
            ShowNotification("Error: " + ex + "", WarningType.Danger);
        }
    }

    private void UpdateUser()
    {
        using (SqlConnection con = new SqlConnection(Base.GetConnection))
        {

            using (SqlCommand cmd = new SqlCommand("UPDATE TableUserProfile SET UserName=@UserName,UserContact=@UserContact,UserDesignation=@UserDesignation,UserDepartment=UserDepartment WHERE UserEmpNum=@UserEmpNum", con))
            {
                string Uname, UContact, UDesignation, UDepartment, UEmployeeNo;
                Uname = tbName.Value.ToUpper();
                UContact = tbMobileNo.Value.ToUpper();
                UDesignation = tbDesignation.Value.ToUpper();
                UDepartment = tbDepartment.Value.ToUpper();
                UEmployeeNo = tbEmployeeNo.Value.ToUpper();
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@UserName", Uname);
                cmd.Parameters.AddWithValue("@UserContact", UContact);
                cmd.Parameters.AddWithValue("@UserDesignation", UDesignation);
                cmd.Parameters.AddWithValue("@UserDepartment", UDepartment);
                cmd.Parameters.AddWithValue("@UserEmpNum", UEmployeeNo);
                con.Open();
                cmd.ExecuteNonQuery();
                ShowNotification("Succes: Record Saved Succesfully!", WarningType.Success);
            }
        }
    }

这是.aspx代码。

<asp:Content ID="Content2" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
        <div class="container">
        <div class="row">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-body">
                        <div class="row">
                            <div class="col-md-10">
                                <h4>Your Profile</h4>
                                <hr />
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-12">

                                <div class="form-group row">
                                    <label for="username" class="col-4 col-form-label">Name*</label>
                                    <div class="col-6">
                                        <input runat="server" id="tbName" class="form-control here" required="required" type="text" />
                                    </div>
                                </div>
                                <div class="form-group row">
                                    <label for="name" class="col-4 col-form-label">Mobile Number</label>
                                    <div class="col-6">
                                        <input runat="server" id="tbMobileNo" class="form-control here" type="text" />
                                    </div>
                                </div>
                                <div class="form-group row">
                                    <label for="lastname" class="col-4 col-form-label">Employee Number</label>
                                    <div class="col-6">
                                        <input runat="server" id="tbEmployeeNo" class="form-control here" readonly="True" type="text" aria-readonly="True" aria-disabled="True" />
                                    </div>
                                </div>
                                <div class="form-group row">
                                    <label for="text" class="col-4 col-form-label">Designation</label>
                                    <div class="col-6">
                                        <input runat="server" id="tbDesignation" class="form-control here" required="required" type="text" />
                                    </div>
                                </div>
                                <div class="form-group row">
                                    <label for="text" class="col-4 col-form-label">Department</label>
                                    <div class="col-6">
                                        <input runat="server" id="tbDepartment" class="form-control here" required="required" type="text" />
                                    </div>
                                </div>
                                <div class="form-group row">
                                    <div class="offset-4 col-8">
                                        <asp:Button runat="server" ID="btnUpdateProfile" Text="Update My Profile" class="btn btn-primary" OnClick="btnUpdateProfile_Click"></asp:Button>
                                    </div>
                                </div>
                            </div>
                        </div>

                    </div>
                </div>
            </div>

        </div>
    </div>

</asp:Content>

这是PageLoad代码。

     protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["UserEmployee"] != null)
        {
            userEmployeeNumber = Convert.ToString(Session["UserEmployee"]);
            GetUserData();
            ShowNotification("Welcome! Mr/Mrs " + EmployeeID.UserName.ToString() + "", WarningType.Success);
        }
    }

    private void GetUserData()
    {
        using (SqlConnection con = new SqlConnection(Base.GetConnection))
        {
            con.Open();
            using (SqlCommand cmd = new SqlCommand("SELECT [UserName],[UserContact],[UserEmpNum],[UserDesignation],[UserDepartment] FROM TableUserProfile WHERE UserEmpNum=@UserEmpNum", con))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("UserEmpNum", userEmployeeNumber);
                SqlDataReader r = cmd.ExecuteReader();

                while (r.Read())
                {
                    tbName.Value = r["UserName"].ToString();
                    EmployeeID.UserName = tbName.Value.ToString();
                    tbMobileNo.Value = r["UserContact"].ToString();
                    tbEmployeeNo.Value = r["UserEmpNum"].ToString();
                    tbDesignation.Value = r["UserDesignation"].ToString();
                    tbDepartment.Value = r["UserDepartment"].ToString();
                }
            }
        }
    }

标签: c#asp.netwebformstextbox

解决方案


In your Page_Load, you have to check IsPostBack

 protected void Page_Load(object sender, EventArgs e)
 {
       if(!Page.IsPostBack)   
       {
        if (Session["UserEmployee"] != null)
        {
            userEmployeeNumber = Convert.ToString(Session["UserEmployee"]);
            GetUserData();
            ShowNotification("Welcome! Mr/Mrs " + EmployeeID.UserName.ToString() + "", WarningType.Success);
        }
      }
 }

Otherwise in each pageload, your textbox data gets updated with DB value


推荐阅读