2016-10-13 4 views
0

にedititemtemplateする日付ピッカーを結合することができない:私は日付を編集するために私たDetailsViewに次のテンプレートを持っていたDetailsView

<EditItemTemplate> 
         <asp:TextBox id="EndDate" class="datefield" text='<%# Bind("EndDate")%>' runat="server"/> 
        </EditItemTemplate> 

そして、私は次のコードでボタンで編集モードに切り替えています:

protected void Edit_Assignment(object sender, EventArgs e) { 

      if (_gvAssignments.CurrentMode != DetailsViewMode.Edit) { 
       _gvAssignments.ChangeMode(DetailsViewMode.Edit); 
      } 


     } 

私はdatepickerを呼び出すためのドキュメント準備機能とonclientclick機能の両方を持っています。

$(document).ready(function() { 
      $("#tabs").tabs(); 
      $(".datefield").datepicker(); 
      $("#StartDate").datepicker(); 
      $("#EndDate").datepicker(); 
     }); 

     function updateDatepickFields() { 
      alert("Button clicked"); 
      $(".datefield").datepicker(); 
      $("#StartDate").datepicker(); 
      $("#EndDate").datepicker(); 
     }; 
     $(".datefield").on("focus",function() { 
      $(".datefield").datepicker(); 
     }); 

しかし、私が使用しているコードに関係なく、日付ピッカーを付けているようではありません。

答えて

0

ブラウザでページを右クリックし、要素の検査を行い、EndDate要素を探します。 IDが全く違うものとしてレンダリングされることに気付くでしょう!これは、ASP.NetがIDの競合を避けるためにサーバー側のコントロールの名前を変更するためです。

これを念頭に置いて、このIDを持つ要素が存在しないため、Jqueryの参照$('#EndDate')が機能しません。

最も簡単なオプションは、テキストボックスにClientIDMode="static"プロパティを追加することです:

<asp:Textbox runat="server" ClientIdMode="static" ID="EndDate"> 

これは代わりに「書き換え」されているの与えられたIDでレンダリングする要素を強制します。あなたはいつものようにこれらの要素にアクセスすることができます。あなたが<asp:Repeater>または<asp:GridView>のようなものを持っている場合は


、この方法を避けます。要素が繰り返されるため、IDが重複します。そのような場合は、ClientIdMode="Predictable"を使用してください。EndDate_0EndDate_1などのようにアイテムがレンダリングされます。

+0

最初のメソッドは私のために働いていましたが、私はコントロールの上にあるmouseover関数まで操作しなければなりませんでした(document.ready()関数を使って行っていましたが、 aspボタンの –

関連する問題