2012-06-06 7 views
0

웹 사용자 정의 컨트롤에서 public 속성을 변경했으나 사용자 정의 컨트롤을 삭제하고 다시 추가 한 다음 변경 사항을 확인할 때까지 클라이언트는 변경 내용을 볼 수 없습니다.사용자 정의 컨트롤의 속성을 변경하십시오.

사용자 컨트롤을 여러 곳에서 사용하는 경우 어떻게해야합니까? 모든 페이지에서이를 수행해야합니까? 확실하게, 나는 무엇인가 놓쳤다?

가 여기 내 webusercontrol의 코드 숨김입니다 :

public partial class ReportExporter : System.Web.UI.UserControl 
{ 
    public IEnumerable<object> DataSource { get; set; } 

    public String ExportFilename { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void BtnExportCsv_Click(object sender, EventArgs e) 
    { 
     //Client needs to subscribe to this event and set the 
     //DataSource property with IEnumerable. 
     //Todo: Find other ways to show this as a requirement. 
     OnExportEvent(e); 
     if (String.IsNullOrEmpty(ExportFilename)) 
      ExportFilename = "NeedToOverrideThisName"; 
     Response.Clear(); 
     Response.ContentType = "text/csv"; 
     Response.AddHeader("Content-Disposition", "attachment; filename=" + ExportFilename + ".csv"); 

     byte[] csvData = Utility.ToCsv(",", DataSource.ToList()); 
     Response.OutputStream.Write(csvData, 0, csvData.Length); 
     HttpContext.Current.Response.End(); 
    } 

    protected void BtnExportPdf_Click(object sender, EventArgs e) 
    { 

    } 

    public event EventHandler ExportEvent; 

    protected void OnExportEvent(EventArgs e) 
    { 
     if (ExportEvent != null) 
     { 
      ExportEvent(this, e); 
     } 
    } 

} 

은 내가 한 모든 데이터 소스에 대한 속성 이름을 변경했다, 그것은 AnyList이었다.

+1

코드가 누락되었습니다. 우리는 그 설명만으로는 어떤 일이 일어나는지 알 수 없습니다. – Oded

+0

변경 사항이 표시되기 전에 컨트롤을 무효화()해야 할 수도 있습니다. – itsme86

답변

1

난 당신이 샘플에 대한, viewstate가에있는 속성 값을 절약 할 수있다, 이해한다면 :

public String ExportFileName 
{ 
    get 
    { 
     if (ViewState["ExportFileName_" + this.Id] == null) 
      return "default_name"; 

     return ViewState["ExportFileName_" + this.Id].ToString(); 
    } 
    set 
    { 
     ViewState["ExportFileName_" + this.Id] = value; 
    } 
} 

이 뭔가를 할 경우, 당신은없이 페이지에 둘 이상의 사용자 컨트롤 인스턴스를 가질 수 있습니다 viewState 키는 사용자 정의 컨트롤의 Id 속성에 의해 인덱싱되기 때문에 문제가 발생합니다.

관련 문제