- PR -

Ajax を使うときの Web.Config

投稿者投稿内容
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-26 10:06
お世話になります。

GridView の編集でカレンダーをドロップダウンで表示したく調べているとAJAXを使用すれば可能とありました。そこで、AJAX をインストールし「PopupControlExtender」を張りtargetControlID をカレンダーにセットしました。コンパイルすると下記のようなエラーが出ます。「エラー CS0012: 型 'System.Web.UI.ExtenderControl' が参照されていないアセンブリで定義されています。アセンブリ 'System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' への参照を追加してください。」それで、ネットで調べると、Web.config に下記のように追加とあったのでやってみましたが、エラーは、解消しません。どうしたらいいですか?教えてください。

<system.web>
:
:
:
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
</controls>
</pages>
</system.web>


<ajaxToolkit:PopupControlExtender ID="PopupControlExtender1" runat="server" TargetControlID="Calendar1">
</ajaxToolkit:PopupControlExtender><asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>

VS2005 C# ASP>NET
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-26 14:34
操作されているのは、AJAX導入前に作成されたプロジェクトですよね?

あまりよいアドバイスができないのですが、
・新規でAJAX-EnabledなWebアプリを作ってみて、そのWeb.configと比較して、足りないものがあれば追加する
・(Webサイトでなく)Webプロジェクトであれば、参照設定にSystem.Web.Extensionsがあることを確認する
・GACにSystem.Web.Extensionsがあることを確認する(管理ツールの.NET Framework 2.0 Configurationから確認できます)

あたりを試されてみるとどうでしょうか。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-26 16:13
お世話になります。

> System.Web.Extensionsがあることを確認する
アッセンブリキャッシュ内にあることが確認できました。

最初に書くのを忘れましたが、エラーをダブルクリックすると「xxx.aspx.designer.cs」内の「protected global::AjaxControlToolkit.CalendarExtender CalendarExtender1;」の最後の CalendarExtender1 でエラーになっているようです。

> Web.configと比較して、足りないものがあれば追加する
は、それらしき物の多くをコピペしてみましたが、変わらないので、問題個所はここではないのかもしれません。最初にネットを読みあさった時は、「Web.Config も変更」とあったのでここを疑ってましたが.....

試しに、新規プロジェクトでASP.NET Ajax-Enable web Application で空のサンプルを作成し適当に、下記コードを追加しコンパイルしました。コンパイルは、OKですが、
走らせるとエラーになってしまいます。
「コードの追加」
<cc1:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="TextBox1">
</cc1:CalendarExtender>
上記以外のコードは、追加していません。

「エラー内容」
「The control with ID 'CalendarExtender1' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.

結局、仮にコードの追加でコンパイルが通ってもまだ、使い方を知らないようです。
基本的な、Ajaxの使い方って紹介したページ内ですか?
教えてください。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-26 16:41
お世話になります。

エラーについては、ソリューションエクスプローラー内の「参照設定」に System.Web.Extensions が入ってないことがわかり、追加することでコンパイル時のエラーは、回避できました。しかし、Ajax の使い方がわかりません。
現在のところ、下記のように配置して動かすとエラーが出ます。
「The control with ID 'CalendarExtender1' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.」

Ajax の使い方、又は、カレンダをポップアップで表示して日付を取り込むといったサンプルなどあるでしょうか?教えてください。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-05-26 17:03
ASP.NET AJAX TIPS
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html#i32

カレンダー
http://www.atmarkit.co.jp/fdotnet/dotnettips/575aspajaxcalendar/aspajaxcalendar.html
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-05-27 06:14
このサンプルが参考になるかと

GridViewでドロップダウンカレンダーを表示する(ASP.NETのCalendar使用)
http://asp35.com/samples/080518VB-1.aspx?it=demo

ドロップダウンカレンダーを表示する(AJAX Control ToolkitのCalendarExender使用)
http://asp35.com/samples/080120VB-1.aspx?it=demo

CalendarExtenderの使い方
http://asp35.com/samples/080515VB-2.aspx?it=demo

JavaScriptのみでカレンダー表示(Yahoo!UI Library) ASP.NET AJAX不要
http://jsajax.com/CalendarDropDownListArticle402.aspx

JavaScriptのみでカレンダー表示(jQuery UI DatePicker) ASP.NET AJAX不要
http://jsajax.com/UIDatePickerArticle879.aspx

ASP.NET AJAXが使用できないときはjQuery UI DatePickerがお勧めです。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-05-27 10:02
お世話になります。

> GridViewでドロップダウンカレンダーを表示する(ASP.NETのCalendar使用)
> http://asp35.com/samples/080518VB-1.aspx?it=demo
現在、上記を参照にして GridView の EditItemTemplate にカレンダーを表示させようとしています。EditItemtemplate 内に<cc1:PopupControlExtender ID="PopupControlExtender1" runat="server" TargetControlID="TextBox2" PopupControlID="pnlDatePicker" Position="Bottom" />と書いてあり下記のようなメッセージ1が出ています。実際には、ページを表示していますが、IEのステータスバーに「実行しましたが、ページでエラーが発生しました」と表示し「編集」をクリックすると下記のコードで、「指定されたキャストは有効ではありません。 」というエラーが発生しています。
教えてください。お願いします。
メッセージ1
「エラー 1 要素 'PopupControlExtender' は不明な要素です。これは、Web サイトでコンパイル エラーがあるときに、発生することがあります。」

コード
<asp:Calendar ID="Calendar1" runat="server"
Width="220px" DayNameFormat="Shortest"
BackColor="#FFFFCC" BorderColor="#FFCC66" Font-Names="Verdana"
Font-Size="8pt" ForeColor="#663399"
  OnSelectionChanged="Calendar1_SelectionChanged" BorderWidth="1px" Height="200px" SelectedDate='<%# Bind("FixOutDate") %>' ShowGridLines="True">
<SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" />
<TodayDayStyle BackColor="#FFCC66" ForeColor="White" />
<SelectorStyle BackColor="#FFCC66" />
<OtherMonthDayStyle ForeColor="#CC9966" />
<NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
<DayHeaderStyle BackColor="#FFCC66" Font-Bold="True" Height="1px" />
<TitleStyle BackColor="#990000" Font-Size="9pt" Font-Bold="True" ForeColor="#FFFFCC" />
</asp:Calendar>
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-05-27 10:43
Registerディレクティブを書かないとだめです。こんな風に。
http://momotchi.net/forums/t/702.aspx

PopupControlExtenderをツールボックスに登録してそこからドラッグドロップで
貼り付けてください(普通のButtonとかと同じように)。
すると自動的にRegisterディレクティブが作成されるはずです。

[追記]
あ、間違えたかも。configで
<add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
としてるからRegisterしなくて大丈夫かも。でもtagPrefix="ajaxToolkit"としながら
タグプリフィックスを<cc1:としてますよね。

[ メッセージ編集済み 編集者: べる 編集日時 2008-05-27 11:49 ]

スキルアップ/キャリアアップ(JOB@IT)