我需要从代码隐藏中调用确认消息框,因为用户从dropdown
列表中选择数据,并且当所选数据为1时,例如,将向用户显示确认框以确认其操作
所以我在下面的代码中做了这个,我调用了这个JavaScript方法:
if (dropdownlist1.SelectedValue == 1)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "CallConfirmBox", "CallConfirmBox();", true);
}
脚本功能:
<script type="text/javascript">
function CallConfirmBox() {
if (confirm("هل تريد ان تفصل الباليت؟")) {
alert("سيتم فصل الباليت!");
PageMethods.getdata(onSuccess, onError);
function onSuccess() {
alert(data);
}
function onError() {
alert(errorMessage);
}
}
} else {
//CANCEL – Do your stuff or call any callback method here..
alert("done!");
}
}
我在HTML代码的开头添加了以下行:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> </asp:ScriptManager>
以下是从脚本调用的函数背后的代码:
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static void getdata()
{
int nRowsCheck = cMDP.Update_Segregation_PalletPart(nPalletNo);
if (nRowsCheck != 0)
{
nRowsCheck = 0;
nRowsCheck = cMDP.Update_Segregation_Pallet(nPalletNo, nUserID);
if (nRowsCheck != 0)
{
nRowsCheck = 0;
nRowsCheck = cMDP.Delete_Segregation_PalletPart_Delete(nPalletNo);
if (nRowsCheck != 0)
{
nRowsCheck = 0;
nRowsCheck = cMDP.Delete_Segregation_Pallet_Delete(nPalletNo);
}
}
}
}
但是我得到了以下错误:
运行脚本时页面方法未定义!!
请提供帮助,因为我需要一些支持
答案 0 :(得分:0)
你有两个问题:
更改您的javascript代码:
PageMethods.getdata(onSuccess, onError);
function onSuccess(data)
{
alert(data);
}
function onError(data)
{
alert(data);
}
你在getdata方法后面的代码必须是公共静态字符串函数:
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static string getdata()
{
//Do some things
return " Operations done successfully!";
}
答案 1 :(得分:0)
首先,您必须在JavaScript中的}
之前删除一个else
。
改变您的代码隐藏:
if (dropdownlist1.SelectedValue == "1")
主要问题:Page Methods is undefined
:
您的评论似乎表明您正在使用用户控件(ascx)。 页面方法无法在用户控件中使用。请参考以下问题:
最简单的解决方案是使用aspx WebForm而不是ascx用户控件。这就是我测试和工作过的。
或者您可以使用WebService,如以下问题中所述:
但样本的链接不再有效。
或者您可以尝试使用此项目尝试将ASP.NET AJAX页面方法引入UserControls: