2011-08-04 39 views
1

我通常會處理c#代碼,但最近開發了一個asp.net頁面,我有一個出現的日曆,用戶選擇他/她想要的日期。在那個頁面上是一個asp lbl,我想顯示當前選擇的日期,這對我來說通常很容易,但是我在參考/查找控制時遇到了問題。此外,我不確定實現這一目標的最佳方法,我一定會在未來遇到此問題。C#中的ASP.Net標籤更改#

這是我想要設置lbl文本並嘗試使用FindControl方法但它不適合我,認爲它可能嵌套,因爲我有一些div?

public void Calendar1_SelectionChanged(object sender, System.EventArgs e) 
    { 

     Control Lbl = FindControl("inputField"); 
     if (Lbl != null) 
     { 
      //Control mycontrol2 = Lbl.Parent; 
      Lbl.Text = Calendar1.SelectedDate.ToShortDateString(); 
     } 

,這是在ASP。

<div id="date"> 


     <input type="text" size="12" id="inputField" /> 
     <script> 
      $("#inputField").click(function() { 
       $("#box").show("slow"); 
      }); 
</script> 
    </div> 

如何完成將輸入字段文本設置爲Calendar.SelectedDate?。 (和任何提示,如果有你自己遇到過,對於良好的做法)

謝謝任何​​幫助。

回答

6

爲什麼你不使用asp:Label?您無法找到「標籤」,因爲它是一個html控件,也就是客戶端控件。使用一個<asp:Label id="lblCal" runat="server"...,你應該沒有問題背後的代碼改變其文本:

lblCal.Text = Calendar1.SelectedDate.ToShortDateString(); 
2

Asp.Net只考慮服務器的標籤爲可利用在C#電平控制。

所有這些DIV和其他標籤都只是Asp.Net的純文本,它們不會在控制層級中被考慮。

爲了使Asp.Net在服務器中考慮它,將runat="server"屬性放在您感興趣的標籤上。它們將通過id屬性中的名稱在代碼隱藏中變爲可訪問。

Asp.Net將永遠無法在示例代碼中找到'inputField'。

解決方案:

解決你的問題,我建議你使用一個名爲TextBox一個Asp.Net WebForm的控制......如果你想要的是一個input

<asp:TextBox runat="server" id="inputField" /> 

通過這樣做,您將能夠訪問inputField,在代碼後面的名稱:

inputField.Text = Calendar1.SelectedDate.ToShortDateString(); 
+0

+1有效,但是,我用碎紙機,雖然兩個相同的想法! – user685590