2011-08-05 26 views
0

私は日付ピッカーを使い始めて、とても気に入っています。しかし、今私はそれに問題がある。 私はASP.Netアプリケーションを持っています。私はマスターページ、Default.aspxページ、いくつかのユーザーコントロール(.ascxページ)を持っています。これらのユーザーコントロールの1つでは、日付を含むテキストボックスを持つGridViewがあります。これらのテキストボックスは、datepickersを使用します。 GridViewはUpdatePanelにあります。私はGridViewのカスタムページングを使用します。例えば、私は次のページに移動する必要があり、そのUpdatePanelが更新されます。問題は、最初のページから別のページに移動すると、日付ピッカーが消えてしまうことです。ここで が私のコードです:マスターページの一番下に :日付ピッカー問題

のGridViewで
<script type="text/javascript"> 
$(document).ready(function() { 
    $("input.date").datepicker({ 
     showButtonPanel: true, 
     dateFormat: 'mm/dd/y', 
     changeYear: true, 
     closeText: 'X' 
    }); 
}); 
</script> 

<asp:TextBox ID="txtWFHCDate" runat="server" Text='<%#Eval("StrHCDate") %>' BorderStyle="None" Width="80%" CssClass="date" ></asp:TextBox> 

HTML初期GridViewのページ用に生成:

<input id="ctl00_CPHDefault_tcTPS_TPProd_ctl01_tcProduction_TPWorkflow_WorkflowGridView_ctl05_txtWFHCDate" class="date hasDatepicker" type="text" style="border-style:None;width:80%;" value="10/18/11" name="ctl00$CPHDefault$tcTPS$TPProd$ctl01$tcProduction$TPWorkflow$WorkflowGridView$ctl05$txtWFHCDate"> 

GridViewページの変更後に生成されるhtml:

<input id="ctl00_CPHDefault_tcTPS_TPProd_ctl01_tcProduction_TPWorkflow_WorkflowGridView_ctl05_txtWFHCDate" class="date" type="text" style="border-style:None;width:80%;" value="10/18/11" name="ctl00$CPHDefault$tcTPS$TPProd$ctl01$tcProduction$TPWorkflow$WorkflowGridView$ctl05$txtWFHCDate"> 

マスターページからDefault.aspxページと.ascxページにスクリプトを移動しようとしましたが、何も役立たないです。

助けてください。おかげさまで

+0

私はここで完全な画像を見ているとは思わない。 「問題は、最初のページから別のページに行くと、日付ピッカーが消えてしまうことです。」その3ページすべてにJSがありますか?新しいページが読み込まれたときにJSを初期化する必要があります。 – nolabel

+0

私はそこに「ページ」と言ったとき、私はaspxページを意味しませんでした。私はちょうど私のGridViewのカスタムページングを意味しました。例えば。デフォルトでGridViewは最初の100個のレコードを表示します.Nextボタンを押すとUpdatePanelが更新され、GridViewは次の100個のレコードを表示します(日付ピッカーはもう動作しません)。スクリプトはマスターページの一番下にありますが、aspxページと、GridViewが配置されている非常にascxページ(ユーザーコントロール)も試しました。 – dpreznik

答えて

1

ready()関数は、datepicker()を呼び出してテキスト入力に必要なバインディングを追加します。 GridView/UpdatePanel内の「ページ」を変更すると、それらのテキスト入力は破棄され、新しいものに置き換えられます。

UpdatePanelが次の「ページ」をロードした後、テキスト入力を再バインドするには、datepicker()を再度呼び出す必要があります。これを.ascxコントロールに統合するか、hereというUpdatePanelコールバックを使用することができます。

+0

ありがとう、私はUpdatePanelコールバックを使用し、私はそれを.aspxページの一番下に置くと機能しました。私はMasterページの下部でなぜそれがうまくいかなかったのだろうと思う。 – dpreznik