2011-08-04 2 views
1

私は通常C#コードを扱っていますが、最近asp.netページを開発しています。私はカレンダーが表示され、ユーザーは自分が望む日付を選択します。そのページでは、現在選択されている日付を表示するasp lblですが、これは通常は簡単ですが、コントロールの参照や検索に問題があります。また、私はこれを達成するための最善の方法が不明であり、将来この問題に遭遇するはずです。ASP.Net C#でのラベルの変更

ここでは、lblテキストを設定して、FindControlメソッドを試してみましたが、私のためには動作しません。おそらく入れ子になっていると思っています。

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 Webフォームコントロールを使用することをお勧めあなたの問題を解決するために...何が欲しいのはinputの場合:

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

これにより、あなたは暗証番号でinputFieldにアクセスして名前をつけます:

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

+1も同様です私はシュレッダーを使用しましたが、どちらも同じアイデアです! – user685590

関連する問題