2011-10-24 5 views
1

dayrender 이벤트에서 컨트롤을 추가 한 후에 나중에 컨트롤을 찾을 수있는 방법이 있습니까? 나는 시도했다asp.net 달력 컨트롤 내에서 컨트롤을 찾는 방법

calendar.FindControl("lblSample") 

그러나 성공하지 못했다. 여기

내 코드의 일부는 더 명확하게하는 것입니다 : 이벤트 및 페이지로드를 완전히 렌더링

protected void calSample_DayRender(object sender, DayRenderEventArgs e) 
{ 
    Label lblSample = new Label(); 
    lblSample.ID = "lblSample"; 
    lblSample.Text = "Sample"; 
    e.Cell.Controls.Add(lblSample); 
} 

일 후, 나는 시도하고 다시

을 제어 할 수있는 링크 버튼 이벤트를
protected void lbtnSave_Click(object sender, EventArgs e) 
{ 
    //Not working 
    Label lblSample = calSample.FindControl(lblSample); 

    //Also can't get to work, this was using Ross' suggestion and the recursive find function he wrote about. I'm probably just not using it correctly. 
    Label lblSample = ControlFinder.FindControl<Label>(calSample, "lblSample"); 
} 
+1

'FindControl' 재귀 적으로 검색하지 않을, 그래서 당신은뿐만 아니라 현재 어린이를 검색하는 당신의 자신을 만들 필요 해요,하지만 내 모든 용기의 아이들. –

+0

여러 레이어로 반복해야 할 수도 있습니다. 귀하의 양식에 귀하의 통제가있는 ASP : Panel이 있다면 Form => Panel => Control을 탐색해야합니다. – StuartLC

+1

참조 http://stackoverflow.com/questions/2209854/find-all-child-controls-of-specific-type-using-enumerable-oftypet-or-linq – abatishchev

답변

0

이 답변 때문에 난 후였다 값을 찾기 위해 Page.Request.Params를 사용할 수 있다는 것을 나에게 보여주는 위의 로스 '의견이다. 가장 깨끗한 솔루션은 아니지만 작동합니다!

당신이 이벤트를

protected void calSample_DayRender(object sender, DayRenderEventArgs e) 
    { 
     DropDownList ddlSample = new DropDownList(); 
     ddlSample.ID = "ddlSample"; 
     ddlSample.DataSource = sampleDS; 
     ddlSample.DataBind(); 
     e.Cell.Controls.Add(ddlSample); 
    } 

렌더링 하루에 달력 컨트롤에 드롭 다운리스트를 추가하면 나는 드롭 다운리스트가 존재하는지 확인하기 위해 더 많은 검사를 넣어 필요 물론 당신은 다시이 같은 선택된 값을 얻을 수 있습니다 하지만 사진을 얻을

protected void lbtnSave_Click(object sender, EventArgs e) 
    { 
     string sampleID = Page.Request.Params.GetValues("ddlSample")[0]; 
    } 
1

컨트롤은 dayrender 메서드까지 페이지에 추가되지 않았기 때문에 문제가있었습니다. 게시물에 대한 참조를 얻을 수 없다는 것을 의미합니다. Page.Request.Params 컬렉션을 사용하여 OP는 포스트 백에서 가치를 포착 할 수있었습니다.


문제는 찾기 컨트롤이 재귀가 아니며 원하는 컨트롤이 다른 컨트롤 안에 있다는 것입니다. http://stevesmithblog.com/blog/recursive-findcontrol/

을 또는 달력 컨트롤 코드를 게시 할 경우 아마 당신에게 좀 더 도움이 될 수 있습니다

이 당신이 도움이 될 재귀 찾기 제어 방법을 만드는 방법을 보여줍니다.

로스

+0

Ross 문서 주셔서 감사합니다. 내 프로젝트 내 질문에 대한 수정을했고 성공없이 내 캘린더 문제에이 기능을 사용하려고했습니다. 내가 잘못 가고있는 곳을 보여줄 수 있니? – stillsmallvoice

+1

좋아요, 여기서 문제는 버튼을 눌렀을 때 레이블에 캘린더가 추가되지 않았다는 것입니다. 라벨을 잡았을 때 실제로 라벨을 가지고 무엇을하려고합니까? –

+0

실제로 실제 코드에 dropdownlist를 추가하고 selectedvalue를 검색하려고했습니다. 내 생각 엔 네가 옳다고 생각해. 링크 버튼 이벤트가 주간 이벤트 전에 오기 때문에 컨트롤이 지워진다. 나는 아직도 이것을 어떻게 해결해야할지 모르겠다. ... – stillsmallvoice

관련 문제