I've an asp button on an aspx :
<asp:Button id="btnReport2" name="btnReport2" runat="server" class="gradientBlueBtn" Text="Show Report" OnClientClick="Alert();" ToolTip="Report"/>
As you can see, I'm calling a javascript function which uses AJAX to call a C# method. I'm doing this way :
<script>
function Alert()
{
$.ajax({
type: "POST",
url: "Selection.aspx/GetReport",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function()
{
alert('success');
},
error: function()
{
alert('error');
}
});
}
</script>
The thing is, I'm always getting the error message when I'm clicking on the button. Is there something I'm doing wrong?
EDIT : The C# method. I've put a breakpoint to see if the method is called but apparently it isn't.
public void GetReport()
{
AddFilters();
decimal localCurrencyRate;
App_Data.BulkImportDSTableAdapters.ClientsTableAdapter tadptClients = new App_Data.BulkImportDSTableAdapters.ClientsTableAdapter();
string legalEntityID = string.Empty;
if (txtSrcSys.Text != null)
{
DataTable dtSSYS = tadptClients.GetLegalEntityID(txtSrcSys.Text);
if (dtSSYS.Rows.Count > 0)
{
legalEntityID = Convert.ToString(dtSSYS.Rows[0][0]);
}
}
DateTime dtInvoiceFrom = DateTime.ParseExact(txtInvoiceFrom.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
DateTime dtInvoiceTo = DateTime.ParseExact(txtInvoiceTo.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
string strInvoiceFrom = String.Format("{0:yyyyMMdd}", dtInvoiceFrom);
string strInvoiceTo = String.Format("{0:yyyyMMdd}", dtInvoiceTo);
string localCurrency = dbcon.getLocalCurrency(legalEntityID);
DataSet localCurrencyDs = dbcon.getCurrencyRate(localCurrency, strInvoiceFrom);
if (Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[0]["rate"]) == 0)
localCurrencyRate = Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[1]["rate"]);
else
localCurrencyRate = Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[0]["rate"]);
string fileQuery = string.Empty;
if (cbxExpYes.Checked == true && cbxExpNo.Checked == false)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/Query.txt")).Replace("{1}", "XFORM_AREA.IMPORT_GE_MAIN_V15BIS m");
fileQuery = fileQuery.Replace(":param1", localCurrencyRate.ToString());
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
}
if (cbxExpYes.Checked == false && cbxExpNo.Checked == true)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/Query.txt")).Replace("{1}", "PREIMPORT_GE_MAIN m");
fileQuery = fileQuery.Replace(":param1", localCurrencyRate.ToString());
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
}
if (cbxExpYes.Checked == true && cbxExpNo.Checked == true)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/QueryUnion.txt"));
fileQuery = fileQuery.Replace("{ParamValues}", "pg.DEFVAL ");
fileQuery = fileQuery.Replace("{ParamTab}", "ref_var_def pg");
fileQuery = fileQuery.Replace("{ParamCond}", "pg.NM = 'WL_REPORTING_CUR'");
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
fileQuery = fileQuery.Replace("{1}", qb.getFilters().Replace("P.", "i."));
}
ASPxPivotGrid1.OptionsFilter.ShowOnlyAvailableItems = true;
int indexTravFullName = 0;
int indexEndTravFullName = 0;
string paramToRemove = string.Empty;
indexTravFullName = fileQuery.IndexOf("AND PR.ST_TRAVELLER_FULL_NAME LIKE");
if (indexTravFullName > 0)
{
indexEndTravFullName = fileQuery.Substring(indexTravFullName).IndexOf("AND", 3);
paramToRemove = fileQuery.Substring(indexTravFullName, indexEndTravFullName);
fileQuery = fileQuery.Replace(paramToRemove, string.Empty);
}
if (!string.IsNullOrEmpty(fileQuery))
{
DataSet dsTravels = new DataSet();
oCmd.CommandText = fileQuery;
oCmd.CommandType = CommandType.Text;
oCmd.Connection = oConn;
odpter.SelectCommand = oCmd;
odpter.SelectCommand.Parameters.Add(":pSourceSystem", txtSrcSys.Text);
odpter.SelectCommand.Parameters.Add(":pInvoiceFrom", strInvoiceFrom);
odpter.SelectCommand.Parameters.Add(":pInvoiceTo", strInvoiceTo);
if (!String.IsNullOrWhiteSpace(txtCustomNr.Text))
{
odpter.SelectCommand.Parameters.Add(":pCustomerNr", txtCustomNr.Text);
}
if (!String.IsNullOrWhiteSpace(txtIATA.Text))
{
odpter.SelectCommand.Parameters.Add(":Iata", txtIATA.Text);
}
if (!String.IsNullOrWhiteSpace(txtCurrCode.Text))
{
odpter.SelectCommand.Parameters.Add(":CurrCode", txtCurrCode.Text);
}
if (!String.IsNullOrWhiteSpace(txtInvoiceNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pInvoiceNrFrom", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtInvoiceNrTo.Text))
{
odpter.SelectCommand.Parameters.Add(":pInvoiceNrTo", txtInvoiceNrTo.Text);
}
if (!String.IsNullOrWhiteSpace(txtDossierNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pDossierNrFrom", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtDossierNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pDossierNrTo", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtTravellerName.Text))
{
odpter.SelectCommand.Parameters.Add(":pTravellerName", txtTravellerName.Text);
}
if (chbxSale.Checked)
{
odpter.SelectCommand.Parameters.Add(":pSale", "SA");
}
if (chbxRefund.Checked)
{
odpter.SelectCommand.Parameters.Add(":pRefund", "RE");
}
if (hfTravelWith.Value.Contains("chbxairs"))
{
odpter.SelectCommand.Parameters.Add(":pProductAir", "7");
}
if (hfTravelWith.Value.Contains("chbxhotels"))
{
odpter.SelectCommand.Parameters.Add(":pProductHotel", "3");
}
if (hfTravelWith.Value.Contains("chbxcars"))
{
odpter.SelectCommand.Parameters.Add(":pProductCar", "1");
}
if (hfTravelWith.Value.Contains("chbxrails"))
{
odpter.SelectCommand.Parameters.Add(":pProductRail", "6");
}
if (hfTravelWith.Value.Contains("chbxmisc"))
{
odpter.SelectCommand.Parameters.Add(":pProductMisc", "9");
}
if (!String.IsNullOrWhiteSpace(txtBatchNr.Text))
{
odpter.SelectCommand.Parameters.Add(":pBatchNr", txtBatchNr.Text);
}
odpter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
odpter.Fill(dsTravels, "ReportTab");
int count = dsTravels.Tables[0].Rows.Count;
DataTable dt = dsTravels.Tables[0];
if (dt.Rows.Count > 0)
{
ASPxPivotGrid1.DataSource = dt;
ASPxPivotGrid1.DataBind();
Session["dtReport"] = dt;
//ASPxPivotGrid1.Prefilter.CriteriaString = "[" + "" + "]";
}
}
}
I've an asp button on an aspx :
<asp:Button id="btnReport2" name="btnReport2" runat="server" class="gradientBlueBtn" Text="Show Report" OnClientClick="Alert();" ToolTip="Report"/>
As you can see, I'm calling a javascript function which uses AJAX to call a C# method. I'm doing this way :
<script>
function Alert()
{
$.ajax({
type: "POST",
url: "Selection.aspx/GetReport",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function()
{
alert('success');
},
error: function()
{
alert('error');
}
});
}
</script>
The thing is, I'm always getting the error message when I'm clicking on the button. Is there something I'm doing wrong?
EDIT : The C# method. I've put a breakpoint to see if the method is called but apparently it isn't.
public void GetReport()
{
AddFilters();
decimal localCurrencyRate;
App_Data.BulkImportDSTableAdapters.ClientsTableAdapter tadptClients = new App_Data.BulkImportDSTableAdapters.ClientsTableAdapter();
string legalEntityID = string.Empty;
if (txtSrcSys.Text != null)
{
DataTable dtSSYS = tadptClients.GetLegalEntityID(txtSrcSys.Text);
if (dtSSYS.Rows.Count > 0)
{
legalEntityID = Convert.ToString(dtSSYS.Rows[0][0]);
}
}
DateTime dtInvoiceFrom = DateTime.ParseExact(txtInvoiceFrom.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
DateTime dtInvoiceTo = DateTime.ParseExact(txtInvoiceTo.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
string strInvoiceFrom = String.Format("{0:yyyyMMdd}", dtInvoiceFrom);
string strInvoiceTo = String.Format("{0:yyyyMMdd}", dtInvoiceTo);
string localCurrency = dbcon.getLocalCurrency(legalEntityID);
DataSet localCurrencyDs = dbcon.getCurrencyRate(localCurrency, strInvoiceFrom);
if (Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[0]["rate"]) == 0)
localCurrencyRate = Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[1]["rate"]);
else
localCurrencyRate = Convert.ToDecimal(localCurrencyDs.Tables[0].Rows[0]["rate"]);
string fileQuery = string.Empty;
if (cbxExpYes.Checked == true && cbxExpNo.Checked == false)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/Query.txt")).Replace("{1}", "XFORM_AREA.IMPORT_GE_MAIN_V15BIS m");
fileQuery = fileQuery.Replace(":param1", localCurrencyRate.ToString());
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
}
if (cbxExpYes.Checked == false && cbxExpNo.Checked == true)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/Query.txt")).Replace("{1}", "PREIMPORT_GE_MAIN m");
fileQuery = fileQuery.Replace(":param1", localCurrencyRate.ToString());
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
}
if (cbxExpYes.Checked == true && cbxExpNo.Checked == true)
{
fileQuery = File.ReadAllText(Server.MapPath("~/temp/QueryUnion.txt"));
fileQuery = fileQuery.Replace("{ParamValues}", "pg.DEFVAL ");
fileQuery = fileQuery.Replace("{ParamTab}", "ref_var_def pg");
fileQuery = fileQuery.Replace("{ParamCond}", "pg.NM = 'WL_REPORTING_CUR'");
fileQuery = fileQuery.Replace("{0}", qb.getFilters().Replace("P.", "m."));
fileQuery = fileQuery.Replace("{1}", qb.getFilters().Replace("P.", "i."));
}
ASPxPivotGrid1.OptionsFilter.ShowOnlyAvailableItems = true;
int indexTravFullName = 0;
int indexEndTravFullName = 0;
string paramToRemove = string.Empty;
indexTravFullName = fileQuery.IndexOf("AND PR.ST_TRAVELLER_FULL_NAME LIKE");
if (indexTravFullName > 0)
{
indexEndTravFullName = fileQuery.Substring(indexTravFullName).IndexOf("AND", 3);
paramToRemove = fileQuery.Substring(indexTravFullName, indexEndTravFullName);
fileQuery = fileQuery.Replace(paramToRemove, string.Empty);
}
if (!string.IsNullOrEmpty(fileQuery))
{
DataSet dsTravels = new DataSet();
oCmd.CommandText = fileQuery;
oCmd.CommandType = CommandType.Text;
oCmd.Connection = oConn;
odpter.SelectCommand = oCmd;
odpter.SelectCommand.Parameters.Add(":pSourceSystem", txtSrcSys.Text);
odpter.SelectCommand.Parameters.Add(":pInvoiceFrom", strInvoiceFrom);
odpter.SelectCommand.Parameters.Add(":pInvoiceTo", strInvoiceTo);
if (!String.IsNullOrWhiteSpace(txtCustomNr.Text))
{
odpter.SelectCommand.Parameters.Add(":pCustomerNr", txtCustomNr.Text);
}
if (!String.IsNullOrWhiteSpace(txtIATA.Text))
{
odpter.SelectCommand.Parameters.Add(":Iata", txtIATA.Text);
}
if (!String.IsNullOrWhiteSpace(txtCurrCode.Text))
{
odpter.SelectCommand.Parameters.Add(":CurrCode", txtCurrCode.Text);
}
if (!String.IsNullOrWhiteSpace(txtInvoiceNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pInvoiceNrFrom", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtInvoiceNrTo.Text))
{
odpter.SelectCommand.Parameters.Add(":pInvoiceNrTo", txtInvoiceNrTo.Text);
}
if (!String.IsNullOrWhiteSpace(txtDossierNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pDossierNrFrom", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtDossierNrFrom.Text))
{
odpter.SelectCommand.Parameters.Add(":pDossierNrTo", txtInvoiceNrFrom.Text);
}
if (!String.IsNullOrWhiteSpace(txtTravellerName.Text))
{
odpter.SelectCommand.Parameters.Add(":pTravellerName", txtTravellerName.Text);
}
if (chbxSale.Checked)
{
odpter.SelectCommand.Parameters.Add(":pSale", "SA");
}
if (chbxRefund.Checked)
{
odpter.SelectCommand.Parameters.Add(":pRefund", "RE");
}
if (hfTravelWith.Value.Contains("chbxairs"))
{
odpter.SelectCommand.Parameters.Add(":pProductAir", "7");
}
if (hfTravelWith.Value.Contains("chbxhotels"))
{
odpter.SelectCommand.Parameters.Add(":pProductHotel", "3");
}
if (hfTravelWith.Value.Contains("chbxcars"))
{
odpter.SelectCommand.Parameters.Add(":pProductCar", "1");
}
if (hfTravelWith.Value.Contains("chbxrails"))
{
odpter.SelectCommand.Parameters.Add(":pProductRail", "6");
}
if (hfTravelWith.Value.Contains("chbxmisc"))
{
odpter.SelectCommand.Parameters.Add(":pProductMisc", "9");
}
if (!String.IsNullOrWhiteSpace(txtBatchNr.Text))
{
odpter.SelectCommand.Parameters.Add(":pBatchNr", txtBatchNr.Text);
}
odpter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
odpter.Fill(dsTravels, "ReportTab");
int count = dsTravels.Tables[0].Rows.Count;
DataTable dt = dsTravels.Tables[0];
if (dt.Rows.Count > 0)
{
ASPxPivotGrid1.DataSource = dt;
ASPxPivotGrid1.DataBind();
Session["dtReport"] = dt;
//ASPxPivotGrid1.Prefilter.CriteriaString = "[" + "" + "]";
}
}
}
Share
Improve this question
edited Jan 18, 2016 at 10:30
Traffy
asked Jan 18, 2016 at 10:14
TraffyTraffy
2,86115 gold badges53 silver badges80 bronze badges
8
- Adding the error Message would be helpful. – print x div 0 Commented Jan 18, 2016 at 10:19
-
Please add you c# code for
GetReport
method – Govinda Rajbhar Commented Jan 18, 2016 at 10:19 - 1 See stackoverflow./questions/27917255/… – Mairaj Ahmad Commented Jan 18, 2016 at 10:20
- 1 Try creating the post with a tool like postman, you'll get the response from your server in a readable way so you can debug more easily. Also, your function is called GetReport, and you're sending a POST, which sounds wonky, maybe this is your problem? – Glubus Commented Jan 18, 2016 at 10:21
- 1 Please see "Should questions include “tags” in their titles?", where the consensus is "no, they should not"! – user57508 Commented Jan 18, 2016 at 10:23
4 Answers
Reset to default 6Your method must be declared as static
and decorated with [WebMethod]
. So, your method should be:
[WebMethod]
public static void GetReport()
{
// Your code here
}
For more information, please take a look at this post.
EDIT!!!
I see you use some controls in your code (like txtInvoiceFrom
, txtInvoiceTo
). After making your method static
, you cannot access those controls anymore. To solve this problem, please follow these steps (take txtInvoiceTo
as an example):
- Don't get data by using
txtInvoiceTo.Text
or something similar. Pass it as a parameter. - Get
txtInvoiceTo
data from client-side, usingjQuery
or something else (your choice), and pass it to the Ajax to post to server. - To get
txtInvoiceTo
data byjQuery
, you can do:$('#<%= txtInvoiceTo.ClientID %>').val()
Your method must be static and decorated with [WebMethod] as below, why should make it static and decorate with [WebMethod]?
[WebMethod]
public static void GetReport()
{
// Your code here
}
$.ajax({
type: "POST",
url: "Selection.aspx/GetReport",
data: JSON.stringify({ parametername : "Parameter Value" }),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function()
{
alert('success');
},
error: function()
{
alert('error');
}
});
Try with this type of format.
[System.Web.Services.WebMethod]
public static void GetReport()
{
}
[System.Web.Services.WebMethod]
public static void GetReport(string name)
{
}
Get more detail from
http://www.aspsnippets./Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx
There are 3 points that must be checked:
async true in the ajax call. Example:
$.ajax({ type: "POST", url: "<%=System.Configuration.ConfigurationManager.AppSettings["URL"]%>ClassEadArquivos.aspx/deleteArquivo", date: "{FileCode: '" +FileCode + "',CodigoAulaEad: '" + <%=CodigoAulaEad.Value%> + "'}", async: true, contentType: "application/json", success: function (response) {
static and async method in codebehind. Example:
[WebMethod()] public static async System.Threading.Tasks.Task<string> deleteFile(string fileCode, stringCode ClassEad) {
if the codebehind initial method calls other asynchronous methods must all be marked as asynchronous and static.