编辑文本框不起作用(它没有插入和提交新数据)

Edit Textbox not working (It is not taking the new data inserted and submitted)

我在一个网站上工作,其中有一些文本框的 ReadOnly 值为 false,即它是可编辑的。在页面加载时,用户的原始名称(值)是从数据库加载的,如果其中有一些错误,he/she 可以 change/update。但是当我更改值并单击提交时,它仍然采用以前存储的值而不是给定的新数据。 文本框的 .aspx 代码 片段:

<div class="form-group" style="width: 80%">
    <div class="input-group mb-2">
        <div class="input-group-prepend">
            <div class="input-group-text headDetails">Trainee Name</div>
        </div>
        <asp:TextBox ID="TextBox2" runat="server" CssClass="form-control"></asp:TextBox>
    </div>
</div>

.aspx.cs:

        protected void Page_Load(object sender, EventArgs e)
        {
            string UserId = Session["new2"].ToString();
            Response.Write(UserId);
            try
            {
                mycon = new MySqlConnection("server=localhost;database=trainee;user id=abcd;password=abcde@gea;");
                MyCm = new MySqlCommand("select * from trainee_master where trainee_master.Reference_Number='" + UserId.ToString() + "'", mycon);
                myad = new MySqlDataAdapter(MyCm);
                DataTable dt = new DataTable();
                myad.Fill(dt);
                if (dt.Rows.Count > 0)
                {
                    TextBox1.Text = dt.Rows[0][0].ToString();
                    TextBox2.Text = dt.Rows[0][1].ToString();
                    DropDownList1.Text = dt.Rows[0][2].ToString();
                    DropDownList2.Text = dt.Rows[0][3].ToString();
                    TextBox5.Text = dt.Rows[0][9].ToString();
                    TextBox6.Text = dt.Rows[0][4].ToString();
                    TextBox7.Text = dt.Rows[0][5].ToString();
                    TextBox8.Text = dt.Rows[0][6].ToString();
                    TextBox9.Text = dt.Rows[0][7].ToString();
                    TextBox10.Text = dt.Rows[0][8].ToString();
                }
                //TextBox2.Focus();
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }


        protected void Button1_Click(object sender, EventArgs e) //Submit button
        {
            try
            {
                string s1 = TextBox1.Text;
                Response.Write(s1);
                string s2 = TextBox2.Text;
                Response.Write(s2);
                string s3 = DropDownList1.Text;
                Response.Write(s3);
                string s4 = DropDownList2.Text;
                Response.Write(s4);
                string s5 = TextBox5.Text;
                Response.Write(s5);
                string s6 = TextBox6.Text;
                Response.Write(s6);
                string s7 = TextBox7.Text;
                Response.Write(s7);
                string s8 = TextBox8.Text;
                Response.Write(s8);
                string s9 = TextBox9.Text;
                Response.Write(s9);
                string s10 = TextBox10.Text;
                Response.Write(s10);
                
                string sk = "update trainee_master set Name='" + TextBox2.Text + "',Discipline='" + DropDownList1.Text + "',Branch='" + DropDownList2.Text + "',Mobile_No='" + TextBox6.Text + "',Email='" + TextBox7.Text + "',Guide_PNo='" + TextBox8.Text + "',Guide_Name='" + TextBox9.Text + "',Project_Title='" + TextBox10.Text + "',College_Name='" + TextBox5.Text + "' where trainee_master.Reference_Number='" + TextBox1.Text + "'";
                cmd1 = new MySqlCommand(sk, mycon);
                mycon.Open();
                cmd1.ExecuteNonQuery();
                Response.Write("<script>window.alert('Record updated Successfully')</script>");
                mycon.Close();
                
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }
    }
}

如何让文本框动态可编辑?

您的页面加载事件每次都会触发。

记住,即使是您在网页上放置的一个简单按钮?

点击每个按钮,甚至点击下拉列表的自动 post-back?

PAGE 加载事件首先触发,每次触发,每次触发。

因此,在您的情况下,页面加载触发器 - 您加载了文本框。

然后用户在该文本框中键入内容。

然后你点击按钮。您的页面首先 运行 秒再次加载,然后是您的按钮。

那么,对于每一页,或者至少 99% 的页面?

您的页面加载事件需要这个:

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // YOUR load up code goes here
        }
    }

因此,您首先需要真实且真实的页面加载。因此,您必须将 on-page 加载代码放在上面的代码存根中。如果您不为 !IsPostBack test/check,那么每次加载控件代码都会 运行,然后您将永远看不到对控件所做的更改,因为该加载事件会触发每次,并在您的按钮单击事件之前触发。

因此,页面加载 - 每次 运行 秒,您单击的每个按钮都 运行 秒。

通过对 !IsPostBack 的测试,您将获得“真正的”第一次页面加载。