我不明白为什么我的服务器端没有执行。
这是我的代码
ASP代码
<div class="row" style="padding-top:20px;">
<div class="col-lg-4">
<input id="btnSave" type="button" class="btn btn-info" value="Save" />
<input id="btnLoad" type="button" class="btn btn-info" value="Load" />
<%-- SAVE DIALOG --%>
<div id="saveDialog" title="Basic dialog">
<div class="row">
<div class="col-lg-4">
<asp:Label ID="lblFileName" CssClass="control-label" runat="server" Text="File Name"></asp:Label>
</div>
<div class="col-lg-6">
<asp:TextBox ID="txtFileName" CssClass="form-control" runat="server"></asp:TextBox>
</div>
</div>
<div class="row">
<div class="col-lg-12" style="text-align:center;">
<asp:Label ID="lblSaveErrorMsg" runat="server" Text="" ForeColor="Red"></asp:Label>
</div>
</div>
<div class="row" style="padding-top:10px;">
<div class="col-lg-12" style="text-align:center;">
<asp:Button ID="btnSaveFile" runat="server" Text="Save" OnClick="btnSaveFile_Click"/>
</div>
</div>
</div>
</div>
服务器端代码
protected void btnSaveFile_Click(object sender, EventArgs e)
{
string cs = ConfigurationManager.ConnectionStrings["xxx"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
byte[] byteArray = Encoding.UTF8.GetBytes(ASPxPivotGrid1.SaveLayoutToString());
MemoryStream stream = new MemoryStream(byteArray);
DateTime currentDate = DateTime.Now;
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO ReportSave(UserID,ReportName,UserFileName,ReportData,Time,ReportFilter)VALUES(@UserID,@ReportName,@UserFileName,@ReportData,@Time,@ReportFilter);";
cmd.Parameters.AddWithValue("@UserID", UserID);
cmd.Parameters.AddWithValue("@ReportName", ReportName);
cmd.Parameters.AddWithValue("@UserFileName", txtFileName.Text);
cmd.Parameters.AddWithValue("@ReportData", stream);
cmd.Parameters.AddWithValue("@Time", currentDate);
cmd.Parameters.AddWithValue("@ReportFilter", txtFilterRecord.Text);
con.Open();
cmd.ExecuteNonQuery();
//string message = "Your details have been saved successfully.";
//string script = "window.onload = function(){ alert('";
//script += message;
//script += "')};";
//ClientScript.RegisterStartupScript(this.GetType(), "SuccessMessage", script, true);
}
}
注:
它不会显示任何错误消息,也不会重新加载页面。很奇怪。
我调用jquery函数,它执行后也不会调用服务器代码。出于测试目的,我删除了此按钮的整个 jquery 代码。所以现在这个按钮没有 Jquery 函数。但我仍然无法调用服务器端代码为什么???
已更新
我发现了一些东西,我的表单上有一个按钮,称为
,一旦用户单击它就会调用btnSave
$('#btnSave').click(function () {
$('#saveDialog').dialog();
});
重要提示: 然后将出现对话框。在该对话框中,我添加了该按钮
。但是当我在对话框外部添加此按钮时,它正在调用服务器端代码。btnSaveFile
嘿朋友protected void btnSaveFile_Click(object sender, EventArgs e)从其他页面或应用程序复制此方法然后它将不起作用,因此删除分配给按钮的事件和事件名称。转到设计并转到按钮,甚至属性转到OnClick事件双击它,它将生成事件并自动为按钮分配事件名称。会起作用的。
或者
在代码中给出新的 Onclick 函数名称
<asp:Button ID="btnSaveFile" runat="server" Text="Save" OnClick="btnSaveFile_Click"/>
使用完整链接:
https://www.codeproject.com/Questions/681648/button-click-event-not-firing-asp-net
您可以在 Jquery 中使用此代码:
$(document).on('click', '#btnSave', function() {
{
$('#saveDialog').dialog();
});
我最近遇到了一个非常相似的问题。
更新按钮代码如下帮助我解决了问题:
<asp:Button ID="btnSaveFile" runat="server" Text="Save" OnClick="btnSaveFile_Click" UseSubmitBehavior="false"/>
使用 UseSubmitBehavior 为 false 允许页面刷新,但仍然能够触发函数调用。以前,当页面刷新时,它会阻止该函数被调用