@アーミッシュ・クマール、
他の返信ですでに指摘されているように、クライアント側とサーバー側は Web プログラミングで直接接続されていません。クライアントは常にすべての要求の開始者であり、サーバー側の「目的」は応答をレンダリングすることです。応答はクライアントに返されて処理されます。Visual WebGui では、これは通常、何らかの UI 更新処理です。これは基本的に、サーバー側が応答のレンダリングを完了するまでクライアント スクリプトが実行されないことを意味し、クライアントがサーバーにメッセージを返す唯一の方法は、別の要求を発行することです。
たとえば、Visual WebGui で MessageBox をどのように使用する必要があるかを考えてみてください。MessageBox から「応答」を受け取るには、サーバー側のコードでコールバック ハンドラを指定する必要があります。これにより、サーバー側のコードで応答の作成が完了し、クライアントに返されます。クライアントはその UI を更新し、MessageBox ダイアログに対する何らかのアクションで、新しい要求をサーバーに送信します。サーバーはアクションを解釈し、コールバック ハンドラーを呼び出します。コールバック ハンドラーでは、Form.DialogResult を使用してユーザー アクションを取得します。
カスタム Visual WebGui コードでこれを機能させる非常に基本的な方法は、フォーム上の次のコードのようになります。
private void button1_Click(object sender, EventArgs e)
{
SendClientMessage("This is a test");
}
public void SendClientMessage(string strMessage)
{
System.Text.StringBuilder sb = new StringBuilder();
sb.AppendLine("var objEvent = mobjApp.Events_CreateEvent('{0}', 'MessageEvent');");
sb.AppendLine("mobjApp.Events_SetEventAttribute(objEvent, 'Msg', '{1}');");
sb.AppendLine("mobjApp.Events_RaiseEvents();");
this.InvokeScript(string.Format(sb.ToString(), this.ID, strMessage));
}
protected override void FireEvent(Gizmox.WebGUI.Common.Interfaces.IEvent objEvent)
{
if (objEvent.Type == "MessageEvent")
MessageBox.Show(objEvent["Msg"]);
else
base.FireEvent(objEvent);
}
このコードは、Visual WebGui アプリケーションを非表示に設定しない限り機能しません。このコードが隠蔽されたアプリケーションで機能するためには、JavaScript を隠蔽された JavaScript リソースとして追加する必要があり、問題なく動作します。
パリ
enter code here