주소 사용자 정의 컨트롤이 있습니다.페이지에서 사용자 정의 컨트롤을 두 번 사용할 때 하나의 사용자 정의 컨트롤에서 이벤트 및 위임 문제 발생
내 페이지에는 회사 주소 용과 메일 주소 용으로 두 개의 주소를 사용합니다. 그래서 내 주소 사용자 정의 컨트롤을 페이지에서 두 번 사용합니다.
이 주소 사용자 정의 컨트롤에서 사용자가 우편 번호를 채우면 DataBase에서 주소와 건물 주소를 가져 와서 해당 사용자의 텍스트 상자를 채 웁니다.
하지만 내 문제는 사용자가 하나의 우편 번호를 채울 때마다 두 주소록 사용자 정의 컨트롤이 동일한 데이터로 채워지는 것입니다.
여기 모두 * AddressForService_APICall * & MailAddressForService_APICall 이벤트가 발생 txtPostalCode_TextChanged 어드레스 사용자 제어
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
}
내 샘플 코드이므로, 모두 주소록의 사용자 제어는 동일한 데이터로 채워진다.
이 상황을 어떻게 처리해야합니까? 하나의 해당 Address 사용자 정의 컨트롤 만 채우고 싶습니다. 미리 감사드립니다.
케빈
UPDATE 여기
데이터를 채울 것입니다 내 코드입니다. 이 코드는 aspx 페이지로 코딩됩니다. AddressForService 및 MailAddressForService가이 개 된 UserControls를 포함하는 형태로 정의하는 동안
질문 광고에서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)
{
...
}
}
전체 주소 표시를 담당하는 코드를 게시 할 수 있습니까? – Larry
거기에 두 개의 똑같은 (이름에 대해) 종류의 대의원이있는 특별한 이유가 있습니까? –
하나의 대리자 만 사용해도 그 결과는 같습니다. 두 명의 대표와 함께 시도했지만 여전히 동일합니다. – kevin