アドレス ユーザー コントロールがあります。
私のページでは、会社の住所と郵送先住所の 2 つの住所を使用しています。そのため、アドレス ユーザー コントロールを 1 ページで 2 回使用します。
この住所ユーザー コントロールでは、ユーザーが郵便番号を入力すると、DataBase から住所と建物の住所を取得し、ユーザーのテキスト ボックスに入力します。
しかし、私の問題は、ユーザーが 1 つの郵便番号を入力するたびに、両方のアドレス ユーザー コントロールに同じデータが入力されることです。
アドレス ユーザー コントロールのサンプル コードを次に示します。
public delegate void AddressForServiceHandler(string callType, string refreshType, Dictionary<string, string> keyvalues);
public delegate void MailAddressForServiceHandler(string callType, string refreshType, Dictionary<string, string> keyvalues);
public event AddressForServiceHandler AddressForService_APICall;
public event MailAddressForServiceHandler MailAddressForService_APICall;
protected void txtPostalCode_TextChanged(object sender, EventArgs e)
{
#region delegate func
Dictionary<string, string> Params = new Dictionary<string, string>();
Params.Add("PostalCode", txtPostalCode.Text.Trim());
if (AddressForService_APICall != null)
{
AddressForService_APICall(txtPostalCode.Text, "PostalCode", Params);
}
if (MailAddressForService_APICall != null)
{
MailAddressForService_APICall(txtPostalCode.Text, "PostalCode", Params);
}
#endregion
}
txtPostalCode_TextChangedイベントは*AddressForService_APICall*とMailAddressForService_APICallの両方を発生させるため、両方の Address ユーザー コントロールに同じデータが入力されます。
この状況をどのように処理すればよいですか? 対応する Address ユーザー コントロールを 1 つだけ設定したい。前もって感謝します。
ケビン
アップデート
データを埋める私のコードは次のとおりです。これはaspxページのコーディングです。
protected void InitializeEvents()
{
Address1.AddressForService_APICall += new AddressForServiceHandler(AddressForService);
Address2.MailAddressForService_APICall += new MailAddressForServiceHandler(MailAddressForService);
}
protected void AddressForService(string callType, string refreshType, Dictionary<string, string> keyvalues)
{
try
{
using (ServiceAddress cmProxy = new ServiceAddress())
{
Dictionary<string, string> dsPostalCode = new Dictionary<string, string>;
dsPostalCode = cmProxy.GetAddress(callType, refreshType, keyvalues);// it will return the dictionary filled with the data
Address1.RefreshAddressForRegistration(dsPostalCode); // here I call address control method to fill the data
}
}
catch (Exception ex)
{
...
}
}
protected void MailAddressForService(string callType, string refreshType, Dictionary<string, string> keyvalues)
{
try
{
using (ServiceAddress cmProxy = new ServiceAddress())
{
Dictionary<string, string> dsPostalCode = new Dictionary<string, string>;
dsPostalCode = cmProxy.GetAddress(callType, refreshType, keyvalues);
Address2.RefreshAddressForRegistration(dsPostalCode);
}
}
catch (Exception ex)
{
...
}
}