我不是Java开发人员,但我的公司购买了一个产品来处理基于java的会计资料。现在我遇到了一个问题,因为他们希望防止在系统上重复发票,软件允许用户这样做。我打电话给支持,他们建议我在客户端创建一个抑制字段,在该字段上复制我想要显示的消息,并在用户选项卡到下一个字段时读取该字段。这些步骤很多,而且效率很低。以下是基于他们建议的代码。 它目前向我显示发票存在两次消息。
服务器端
CSServer.log (Step)
if ((CSEvent.getTarget().getName() == "InvoiceNumber") && (CSEvent.getAction() == "Tabout" ) && (Step == 0))
{
if (!cnn)
{
CSServer.log ("GPCONNECT Lookup::CSForm_OnValidateLookup Connection to the database failed");
}
else
{
Sql = "SELECT COUNT (*) as Result FROM [DYNAMICS].[dbo].[AP_Invoice_Table] WHERE [VendorID] = '" + CSForm.getField("VendorID").getValue() + "' and [DocumentNumber] = '" + CSForm.getField("InvoiceNumber").getValue()+"'";
resultInvSet = cnn.executeSQL(Sql);
var x =null;
x = resultInvSet.getValue("Result");
}
if (x > 0)
{
CSForm.getField("msg").setValue("Invoice number already exist, please check your entry!");
return false;
}
else
{
CSForm.getField("msg").setValue("");
}
}
客户端
function InvoiceAmount_OnFocus()
{
var m =CSForm.getField('msg').getValue();
if (m != "")
{
$("#InvoiceNumber").focus();
CSClient.alert(m);
CSForm.getField("InvoiceNumber").setFillColor("FF0000");
}
else
{
CSForm.getField("InvoiceNumber").setFillColor("FFFFFF");
}
return true;
}
有人可以告诉我正确的方法吗?
更新 客户端和服务器使用SOAP和HTTP调用进行通信。
答案 0 :(得分:2)
创建一个通过AJAX调用的web方法,并根据该函数的结果弹出javascript警报。
示例(在您的.aspx页面中):
function doSomething(id) {
$.ajax({
type: "POST",
url: "Do_Something.aspx/DoSomething?id=" + id,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response);
}
});
在Do_Something.aspx.cs中:
[WebMethod]
public static string DoSomething(string id)
{
var docs = SqlHelper.SelectAllByInvoiceId(id);
if (docs.Count > 0)
{
return "exists";
}
return "does not exist";
}
答案 1 :(得分:1)
步骤1:创建AJAX功能以与服务器端功能通信。 步骤2:从服务器端函数返回消息并在AJAX函数中处理(成功或完成)。 步骤3:如果ajax函数捕获任何结果,则发出警报消息。
对于ajax实现,您可以参考:http://www.w3schools.com/jquery/ajax_ajax.asp 要么 http://api.jquery.com/jquery.ajax/