一旦我将JavaScript代码添加到程序中,按钮OnClick事件没有触发,任何想法为什么会发生这种情况?,我已经通过了进度条的C#代码,当点击它时会加载进度条。我想要知道为什么按钮点击事件没有触发。
HTML和JavaScript代码:
<asp:Button ID="Confirm_btn" CssClass="confirmBtn" runat="server" Text="Generate Presentation" UseSubmitBehavior="true"
ClientIDMode="Static" OnClick = "Confirm_Click" />
</td></tr>
<tr><td colspan="2" align="center">
<div id="progressbar" style="width:500px"></div>
</td></tr>
</table>
</div>
<asp:Label ID="error" runat="server" ClientIDMode="Static"
EnableViewState="False" Font-Names="Arial"></asp:Label>
</center>
</div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ScriptContent" runat="server">
<script type="text/javascript">
$.updateProgressbar = function () {
//Calling PageMethod for current progress
PageMethods.OperationProgress(function (result) {
//Updating progress
$("#progressbar").progressbar('value', result.progress)
//If operation is complete
if (result.progress == 100) {
//Enable button
$("#Confirm_btn").attr('disabled', '');
}
//If not
else {
//Reset timer
setTimeout($.updateProgressbar, 500);
}
});
};
$(document).ready(function () {
//Progressbar initialization
$("#progressbar").progressbar({ value: 0 });
//Button click event
$("#Confirm_btn").click(function (e) {
e.preventDefault();
//Disabling button
$("#Confirm_btn").attr('disabled', 'disabled');
//Making sure that progress indicate 0
$("#progressbar").progressbar('value', 0);
//Call PageMethod which triggers long running operation
PageMethods.Operation(function (result) {
if (result) {
//Updating progress
$("#progressbar").progressbar('value', result.progress)
//Setting the timer
setTimeout($.updateProgressbar, 500);
}
});
});
});
</script>
</asp:Content>
ProgressBar的C#代码:
/// <summary>
/// PageMethod for triggering long running operation
/// </summary>
/// <returns></returns>
[System.Web.Services.WebMethod(EnableSession = true)]
public static object Operation()
{
HttpSessionState session = HttpContext.Current.Session;
//Separate thread for long running operation
ThreadPool.QueueUserWorkItem(delegate
{
int operationProgress;
for (operationProgress = 0; operationProgress <= 100; operationProgress = operationProgress + 2)
{
session["OPERATION_PROGRESS"] = operationProgress;
Thread.Sleep(1000);
}
});
return new { progress = 0 };
}
/// <summary>
/// PageMethod for reporting progress
/// </summary>
/// <returns></returns>
[System.Web.Services.WebMethod(EnableSession = true)]
public static object OperationProgress()
{
int operationProgress = 0;
if (HttpContext.Current.Session["OPERATION_PROGRESS"] != null)
operationProgress = (int)HttpContext.Current.Session["OPERATION_PROGRESS"];
return new { progress = operationProgress };
}
}
按钮点击事件的C#代码:
protected void Confirm_Click(object sender, EventArgs e)
{
// my process run here
}
答案 0 :(得分:2)
默认情况下,WebForms控件不会发出服务器标记的id
属性中存在的确切ID
属性。您需要为jQuery选择器使用类似的东西:
$('#<%: Confirm_btn.ClientID %>')
答案 1 :(得分:0)
$("#Confirm_btn").live('click', function (e) {
});
试试这个,肯定有效
否则
$("#Confirm_btn").on('click', function (e) {
});
干杯
Phani *