2009-11-05 4 views
1

나는 폼 뷰 컨트롤을 가지고 있으며 ItemCreated 이벤트에서 일부 필드를 기본값으로 "초벌"합니다.삽입 할 FormView 사용

그러나 삽입 할 때 formview를 사용하려고하면 ItemInserting 이벤트가 호출되기 전에 어떤 이유에서 먼저 ItemCreated이 호출됩니다. 그 결과 삽입이 발생하기 직전에 필드가 기본값으로 덮어 쓰여집니다.

ItemInserting 이벤트 전에 ItemCreated 이벤트를 호출하지 않으려면 어떻게해야합니까?

답변

2

당신이 값을 설정하는 대신 formview ItemCreated 이벤트의 데이터 바인딩 이벤트 formview 사용할 필요, 또한

protected void frm_DataBound(object sender, EventArgs e) 
{ 
    if (frm.CurrentMode == FormViewMode.Edit)//whatever your mode here is. 
    { 
     TextBox txtYourTextBox = (TextBox)frm.FindControl("txtYourTextBox"); 
     txtYourTextBox.Text// you can set here your Default value 
    } 
} 

같은 시도하는 때문에 작동하지 않습니다 similare 문제 FormView_Load being overwritten C# ASP.NET

0

이벤트가 발생하는 순서를 변경할 수 없습니다. 그것은 예를 들어 귀하의 값을 재설정하지 않도록 그러나, 당신은 아마 !IsPostBack 내부의 기본값을 설정하는 코드를 포장해야합니다

protected void FormView_ItemCreated(Object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
    //Set default values ... 
    } 
} 
+0

의이 스레드를 확인 ItemCreated를 실제로 치고 싶을 때, 그것은 포스트 백에 있습니다. –

+0

그런 경우, 설정하기 전에 값이 있는지를 확인하는 If 문을 추가해야 할 수도 있습니다. –

0

양식보기의 CurrentMode 속성을 확인하십시오.

void FormView_ItemCreated(object sender, EventArgs e) 
{ 
    if (FormView.CurrentMode != FormViewMode.Insert) 
    { 
     //Initialize your default values here 
    } 
}