2011-10-24 59 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

感謝您的文章羅斯,我會用在一些我的項目。我對我的問題進行了編輯,並嘗試將這個功能用於我的日曆問題,但沒有成功。你能告訴我我要去哪裏嗎? – stillsmallvoice

+1

好的,這裏的問題是,按下按鈕時,標籤還沒有添加到日曆中。當你拿到它時,你真的試圖用這個標籤做什麼? –

+0

我實際上在我的真實代碼中添加了一個下拉列表,並嘗試檢索selectedvalue。我認爲你是對的,linkbutton事件發生在dayrender事件之前,所以我的控件被清除了。我仍然不知道如何解決這個問題,雖然... – stillsmallvoice