2014-11-19 2 views
4

Я не разработчик 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-вызов для связи.

+1

Вы можете сделать что-то подобное с помощью AJAX – Hackerman

+1

Является ли это приложение с помощью SignalR или что-то подобное для двусторонней связи в реальном времени между сервером и клиентом? –

+0

Хороший вопрос @HowardRenollet, позвольте мне попросить поддержать – cojimarmiami

ответ

2

Создание WebMethod, что вы называете через AJAX и попы яваскрипта предупреждения на основе результата этой функции.

пример (на странице .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: Создайте функцию AJAX для работы со стороной на стороне сервера. Шаг 2: Возвращайте сообщение с функции на стороне сервера и обрабатывайте его в функции AJAX (успех или завершение). Шаг 3: Предупреждающее сообщение, если функция ajax ловит любой результат.

Для реализации Ajax вы можете обратиться: http://www.w3schools.com/jquery/ajax_ajax.asp Или http://api.jquery.com/jquery.ajax/

Смежные вопросы