我创建了具有许多字段的表单,这些字段在页面加载时加载有关特定用户的信息。用户单击按钮更新时,页面似乎正在重新加载,然后将相同的信息发送到服务器。
我已经看过关于stackoverflow的模拟答案,但似乎没有一个对我有用。
这是我的前端。
<asp:TextBox ID="BirthDate" type="text" runat="server" class="form-control"
placeholder="fecha nacimiento" aria-describedby="inputGroupPrepend"
required="required"></asp:TextBox>
<asp:Button class="btn btn-primary" ID="update" runat="server" Text="actualizar" AutoPostback="false" OnClick="update_Click"/>
这是我的后端。
//This is where the textboxes are populated
protected void Page_Load(object sender, EventArgs e)
{
string employeID = gestiondeempleados.empleadoID;
string queryStr = "SELECT empleado_id,nombreusuario,nombre Where empleado_id =" + employeID;
using (conn = new MySql.Data.MySqlClient.MySqlConnection(connString))
{
using (cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn))
{
conn.Open();
using (reader = cmd.ExecuteReader())
{
if (reader.Read())
{
firstname.Text = reader.GetString(reader.GetOrdinal("nombre"));
}
}
}
}
//This is where the change textbox should be send to the database
protected void update_Click(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string UpdateStatement1;
UpdateStatement1 = "update erp_empleados set " +
"nombre = '" + firstname.Text "' where empleado_id = " +
gestiondeempleados.empleadoID;
debugmsg.Text = UpdateStatement1;
//MySql connection code....
}
}
我希望发送更改后的文本字段,而不是我最初加载的文本字段。
答案 0 :(得分:1)
我建议使用Ajax请求而不是asp.net Web表单事件,这是在任何Web应用程序框架中提交数据而无需回发的标准和现代方法。
您需要创建一个Web方法并调用它,您可以搜索更多“ asp.net Web方法ajax jquery调用”
$('#btnSave').click(function (e) {
e.preventDefault(); //
var element = this;
$.ajax({
url: "YOUR_WEB_METHOD_URL",
type: "POST",
data: JSON.stringify({ 'Options': someData}),
dataType: "json",
traditional: true,
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.status == "Success") {
alert("Done");
$(element).closest("form").submit(); //<------------ submit form
} else {
alert("Error occurs on the Database level!");
}
},
error: function () {
alert("An error has occured!!!");
}
});
});
或者您可以使用更新面板(非常简单的方法,并且您将使用相同的asp.net事件,但是我不建议您使用此方法,因为它向您的页面注入了很多不清楚的脚本,并且不是安全性方面的最佳实践方面,也许部分无法与某些现代版本的浏览器一起使用。
要使用更新面板,请查看下面的链接
https://www.c-sharpcorner.com/UploadFile/f50501/use-updatepanel-control-in-Asp-Net/
答案 1 :(得分:0)
我想通了,我唯一要做的就是添加!IsPostBack是初始化的变量。我不确定为什么任何人都可以澄清原因。
List[Any]