17

OK-カスタムの日付ピッカーコントロールを使用するシステムで作業しています(他にもコントロールがあることはわかっていますが、一貫性を保つために、現在の問題が発生している理由を理解して修正したいと思います)。

したがって、テキストボックスとPage_PreRenderを使用したカスタムユーザーコントロールは次のようになります。

protected void Page_PreRender(object sender, EventArgs e)
    {

        string clientScript = @"
        $(function(){
        $('#" + this.Date1.ClientID + @"').datepicker({dateFormat: 'dd/mm/yy', constrainInput: true});
        });";
        Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, clientScript, true);

        //Type t = this.GetType();
        //if (!Page.ClientScript.IsStartupScriptRegistered(t, this.ClientID))
        //{
        //    Page.ClientScript.RegisterStartupScript(t, this.ClientID, clientScript, true);
        //}
    }

コメントアウトされたものを無視します-それは私が別のことを試みていた-助けにはなりませんでした。

私の問題は、ページをロードするときにこれがすべて正常に機能することです。しかし、ドロップダウンリストから何かを選択すると、ページのポストバックが発生します。日付フィールドをクリックすると、機能しなくなります。のように、テキストボックスをクリックすると、素敵なカレンダーコントロールが表示されます。しかし、ポストバック後、表示される優れたカレンダーコントロールはありません!

現在、すべて更新パネル内に(ホスティングページで)ラップされています。だから私は更新パネルのものをコメントアウトし、日付はページのポストバック後に機能しています。したがって、それはその更新パネルに関連するもののようです。

何か提案はありますか?

ありがとう!!

4

1 に答える 1

31

Page.ClientScriptの代わりにScriptManagerを試しましたか?以前にUpdatePanelsとjQueryを使用して作成したコードを確認し、ScriptManagerを使用しました。ScriptManagerに登録されていない場合、部分的なポストバック中にスクリプトを使用できないと思います。

このように見えます:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "DatePickerScript", clientScript, true);
于 2010-06-09T09:36:07.827 に答える