我在我的aspx页面后面的代码中有一个方法,我需要从Javascript调用两个方法,我遇到的问题是我试图用Json请求和WebMethod来做,但是此方法必须是静态的,并且无法从此方法访问页面组件和其他方法。
我正在尝试像:
javascript功能
function Func(Value) {
var conf=confirm('Sure? '+valor)
if (conf==true)
{
BlockAction();
}
}
function BlockAction() {
$.ajax({
type: "POST",
url: 'frmVentaTelefonica.aspx/BlockAction',
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#divResult").html("success");
},
error: function (e) {
$("#divResult").html("Something Wrong.");
}
})};
代码隐藏代码:
[WebMethod]
public static void BlockAcction()
{
try
{
frmVentaTelefonica venta = new frmVentaTelefonica();
venta.ConsultarVentaTelefonica();
venta.ImprimirTiquetes();
}
catch (Exception e)
{
throw;
}
}
我想在确认为真时调用这两种方法。
更新: 需要访问这样的两种方法:
public void ConsultarVentaTelefonica()
{
DatosImpresion = new List<Impresion>();
IServicioVentas servicioVentas;
servicioVentas = SATWebServiceLocator<IServicioVentas>.ObtenerServicio();
string Tiquetes = string.Empty;
foreach (GridDataItem dataItem in gridInfoVentaTelefonica.MasterTableView.Items)
{
if ((dataItem.FindControl("CheckBox1") as CheckBox).Checked)
{
Tiquetes = Tiquetes + (dataItem["Tiquete"]).Text + ",";
}
}
Tiquetes = Tiquetes.TrimEnd(Tiquetes[Tiquetes.Length - 1]);
Tiquetes = " " + Tiquetes + " ";
DataSet dsResultado = servicioVentas.EntregaTelefonica(sessionR8A.Turno.IdTurno, Tiquetes);
if (dsResultado.Tables.Count > 0 && dsResultado.Tables[0].Rows.Count > 0)
当它为true时运行它,这些方法在数据库中更新并打印票证(首先阅读网格检查项目)
答案 0 :(得分:0)
如果您尝试更新UI控件或读取其值,那么您所描述的是UpdatePanel控件。页面webmethod无法更新任何控件并刷新UI(除非通过JavaScript)。如果要更新页面的异步状态,可以使用UpdatePanel。
答案 1 :(得分:0)
如果您因为不想刷新页面而尝试使用javascript,请转到更新面板。你的问题的答案是“没有&#39;你不能像你想要的那样访问非静态方法。
它仅支持静态方法的原因是页面实例化没有完成,如果你想使用非静态Web方法,那就去web服务(.asmx)。