トップ回答者
VB2008のスマートタグにAJAXエクステンダーの追加が表示されない

質問
-
いつも参考にさせていただいております
市販のマニュアルを使用しAJAXの学習をしております
今回、ASP.NET(.NET Framework 3.5)で、テキストボックスにエクステンダコントロール
を追加したくASP.NETAJAXのサイトhttp://ajaxcontroltoolkit.codeplex.com/から「ASP.NET AJAX Control Toolkit」のダウンロードを行い市販マニュアルの手順に従いツールボックスの「AJAX Control Toolkit」ダブにコントロールを配置しました。市販のマニュアルによれば対象とするテキストボックスを選択しスマートタググリフをクリックして、スマートタグで「エクステンダの追加」をクリックするとありますが
「エクステンダの追加」が表示されません。またツールボックスから対象とするテキストボックスへの追加もできません。追加不可マーク(丸に斜め線)が出てしまいます。
どのようにしたらいいか教えてください。
宜しくお願いします。
わかばマーク
回答
-
自己レスです。
本件、Ajax Toolkitを.NET4.0で入れ替えたら解決しましたので報告します。
手順は以下のようです。
1.AjaxサイトよりAjaxControlToolkitBinary.NET4.zipをダウンロード
2.上記をD\Visual Studio 2010\AjaxToolkitに解凍
3.上記フォルダのAjaxControlToolkitSampleSite.zipを解凍
4.上記フォルダ中のBinフォルダをコピーして\inetpub\WebYoyaku\Binに貼り付け(前のを削除し貼り付け)
5.VB2010のツールボックスのAjaxToolkitタブを削除
6.その後、ツールボックスにあらたなタブAjax Control Toolkitを作成
7.追加されたAjax Control Toolkitタブ内で右クリックして「アイテムの選択」をクリック
8.「参照」をクリック
9.\inetpub\WebYoyaku\Binフォルダに含まれるAjaxControlToolkit.dllを選択し「開く」をクリック
10.「OK」を選択するとツールボックスにタブコントロールが(以前はテキストアイコンであったが今度はアイコンで)追加された
11.その後、(以前は表示されなかった)TextBoxのスマートタググリフに「エクステンダーの追加」が表示された
12.「エクステンダーの追加」により「FilterTextBoxExtender」の選択が可能となった
以上です。これまで「エクステンダーの追加」がでなかった原因は依然としてはっきりしませんが、構成の問題であったように思います
わかばマーク- 回答としてマーク TasCal 2010年5月16日 2:21
すべての返信
-
御世話になります。追伸です。
下記のようにソースを追加することはできます。このときajaxのインテリセンスは出ます。
・・・・・・上部略・・・・・・
<tr>
<td class="tableStyle1">
郵便番号</td>
<td class="tableStyle2" colspan="4">
<asp:TextBox ID="yubin_bangoTextBox" runat="server" CssClass="ImeOff"
Text='<%# Bind("yubin_bango") %>' />
<ajaxToolkit:FilteredTextBoxExtender ID="yubin_bangoTextBox_FilteredTextBoxExtender" Enabled ="true" targetcontrolid="yubin_bangoTextBox" runat="server" />
<br />
<asp:RegularExpressionValidator ID="RegularExpressionValidator9" runat="server"
ControlToValidate="yubin_bangoTextBox" Display="Dynamic"
ErrorMessage="郵便番号は「000-0000」の書式で入力してください"
ValidationExpression="\d{3}(-(\d{4}|\d{2}))?"></asp:RegularExpressionValidator>
</td>
</tr>・・・・・・以下略・・・・・
上記のようにコーディングした後、デザイン画面でyubin_bangoTextBoxのスマートタグには次のように表示されます
DataBindingsの編集...
DataBindingsの編集...
エクステンダの削除...
DataBindingsの編集...が2つ出るのも気に入らないところです。
よろしくお願いします
わかばマーク -
TasCal さん、こんにちは。
市販のマニュアルにしたがってインストールと有りますが,どのような方法だったのでしょうか。
下記のページに有るように,ツールボックスに AjaxControlToolkit.dll を参照させる形でしょうか?
http://www.asp.net/learn/Ajax-Control-Toolkit/tutorial-47-cs.aspx
また、新しく作成したプロジェクトでも同じ現象が起きるのでしょうか? -
菊地 様
返信いただきありがとうございます。
>市販のマニュアルにしたがってインストールと有りますが,どのような方法だったのでしょうか。
Ajax Toolkit のインストール方法
Visual Basic 2008 Webアプリケーション開発入門、日経BPソフトプレスのP224以降を参考に以下のように行いました。
1.マスターページにScript Managerを追加しました
2.以下のサイトからAjax Toolkitをダウンロードしました
http://ajaxcontroltoolkit.codeplex.com/releases/view/43475
Ajax Control Toolkit .NET3.5-Binaryを選択しました。
3.解凍後、フォルダ ar,cs,de,es,fr,he,hi,it,ja,ko,nl,pt,ru,tr-TR,zh-CHS,zh-CHTの各フォルダとAjaxControlToolkit.dllをC:\inetpub\WebYoyaku\Binにコピーしました
4.Visual Studioを起動して「WebYoyaku」のWebサイト(IIS上にWebYoyakuのWebサイトは作成してあります)を開きました
5.ソリューションエクスプローラに「Bin」フォルダが追加されているのを確認しました
ソリューションエクスプローラで「web.config」をダブルクリックし<configuration><system.web><pages><controls>に以下のエントリーを追加しました
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="ajaxToolkit" namespace ="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
</controls></pages>
6.ファイルメニューの「Web.configの保存」で保存しました
7.今回のプロジェクト「WebYoyaku」のツールボックスにAJAX Control Toolkitのタブを作成しました
8.追加された「AJAX Control Toolkit」タブ内で右クリックしショートカットメニューの「アイテムの選択」をクリックすると「ツールボックスアイテムの選択」ダイアログボックスが表示されました
9.「参照」をクリックし「開く」ダイアログでC:\inetpub\WebYoyaku\Binを指定しフォルダに含まれる「AjaxControlToolkit.dll」を選択し「開く」をクリックしました。
10. すると「ツールボックスアイテムの選択」ダイアログボックスの「.NET Frameworkコンポーネント」タブの一覧にカスタムコントロールが追加されました
11. 「OK」をクリックするとツールボックスの「AJAX Control Toolkit」タブにコントロールが配置されました。
12. その後、作成中のフォームのデザインビューのテキストボックスを選択しスマートタググリフをクリックすると、スマートタグは表示されますが「エクステンダの追加」が表示されません。。。。。。[疑問①]
>また、新しく作成したプロジェクトでも同じ現象が起きるのでしょうか?
起きます。以下のようにやってみましたが、結果は同じで「エクステンダの追加」は表示されません。
1.C:\inetpub\test_site1フォルダを作成
2.IISでtest_site1のWebサイトを作成
3.C:\inetpub\test_site1¥BinにWebYoyakuで使用したBinをコピー
4.web.configもWebYoyakuと同様に修正しました
5.その後、マスターページを作成しマスターページにScript Managerを追加しました
6.test_list1.aspxを作成しSqlDataSource,Formviewを追加しました
7.Formviewタスクのスマートタグでテンプレートの編集を選択し表示名:EditItemTemplateを選択しました。
8.その後、yubin_bangoテキストボックスのスマートグリフをクリックしても「DataBindingsの編集...」が表示されるだけで「エクステンダの追加」が表示されません。。。。。。[疑問①]
なお、下記のように手動でコーディングはできます。
<br />
yubin_bango:
<asp:TextBox ID="yubin_bangoTextBox" runat="server"
Text='<%# Bind("yubin_bango") %>' />
<ajaxToolkit:FilteredTextBoxExtender ID="yubin_bangoTextBox_FilteredTextBoxExtender" Enabled ="true" targetcontrolid="yubin_bangoTextBox" runat="server" />
<br />
この時、テキストボックスのスマートタグは次のようになります。
DataBindingsの編集...[1]
DataBindingsの編集...[2]
エクステンダの削除...
[1]をクリックして表示される「yubin_bangoTextBox Databindings」画面においてバインド可能プロパティとして表示されるのはEnabled,ReadOnly,Text,Visibleの4つですが[2]ではVisibleだけです。なぜ2つになるのかも不思議です。[疑問②]
ソース画面ではツールボックスの「AJAX Control Toolkit」からFilterdTextExtenderを追加できますが以下のようになります。そのまま使えません。[疑問③]
yubin_bango:
<asp:TextBox ID="yubin_bangoTextBox" runat="server"
Text='<%# Bind("yubin_bango") %>' />
<ajaxToolkit:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server">
</ajaxToolkit:FilteredTextBoxExtender>
<br />
以上まとめると疑問点は3つです
① 「エクステンダの追加」が表示されません
② 手動でエクステンダを追加するとDataBindingsの編集が2つでる
③ ソース画面でFilterdTextExtenderを追加できますそのまま使えない
長々となりましたが宜しくお願いします
わかばマーク -
こちらで同じ手順で試してみましたが,正常にエクステンダーの追加が表示され,ドラッグでも追加できました。
(Visual Studio 2008 Team Suite SP1 + Windows 7 Enterprise 64bit)
・プロジェクトの新規作成から ASP.NET Webアプリケーションプロジェクトを作成
・ToolBoxにAjax Control Toolkitのコントロールを配置(一度Toolboxをリセットしてから任意の場所のAjaxControlToolkit.dllを参照)
・Default.aspxにテキストボックスを配置
といった単純な手順でもエクステンダーの追加がでない場合は,Visual Studioの構成に問題があるかもしれません。
設定のリセットやセーフモードでの起動を試してみてください。
http://msdn.microsoft.com/ja-jp/library/ms241273(v=VS.90).aspx
http://msdn.microsoft.com/ja-jp/library/ms241278(v=VS.90).aspx
http://msdn.microsoft.com/ja-jp/library/ms241276(v=VS.90).aspx
-
回答いただきありがとうございます
私の環境は VS 2008 Professional+Vista Ultimateです。
設定のリセットを行いました。エクステンダーの追加は出ないのですが、ご指摘のようにVisual Studioの構成に問題があるように思います。
というのは、「デバックなしで実行」時に設定のリセット前には出なかった「Webページ」の画面が出てきて 「AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.」のエラーが表示されるからです。 「'$common' は Null またはオブジェクトではありません。」のようなエラーも出ます。以前のエラーは画面いっぱいにスクリプトが出力されていました。
なお Devenv.exe /SafeModeや Devenv.exe /ResetSkioPkgsは管理者権限でないとデバッグそのものができないので確認できませんでした。
再インストールを実行してみる価値はあるのでしょうか。
わかばマーク -
こんにちは、TasCal さん。
エラー内容から、バージョンが違っていたりするのでしょうか。Visual Studio 2010 Beta などがインストールされているなどはないでしょうか。
同じエラーのものを探してみたのですが、以下のように変更することで対応できたというものがありました。
解決しなかったらごめんなさい。
http://stackoverflow.com/questions/1832533/trouble-switching-to-the-beta-ajaxcontroltoolkit
http://forums.asp.net/t/1529516.aspx
変更前
<asp:ScriptManager ID="ScriptManager1" runat="server" />
変更後
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>別の環境でも同じように起こるかというところも気になりました。
ほかにもどなたか同じ問題に遭遇していらっしゃる方がいらっしゃいましたら、ぜひ情報をお寄せください。よろしくお願いします。
それではまた。 -
回答いただきありがとうございます。
>エラー内容から、バージョンが違っていたりするのでしょうか。
バージョンはAjaxControlToolkit.Binary.NET35.zipをしようしているので間違いはないと思います
Visual Studio 2010 Beta などがインストールされているなどはないでしょうか。
2010はインストールしていません。MSDN Library for Microsoft Visaul Studio 2008 Express Editionはインストールされています。教えていただいた件をさっそく試してみました。残念ながら上記を適用できませんでした。変更した箇所で「認識されないタグプレフィックスまたはデバイスフィルタ'cc1'です」が出力されてしまいます
修正をかけたマスターページは以下のようなものです。
<%@ Master Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Web予約管理システム</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
<style type="text/css">
.style1
{
width: 1078px;
}
</style>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<table cellpadding="0" cellspacing="0" class="style1">
<tr>
<td>
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/title4.gif" />
</td>
<td>
<asp:HyperLink ID="HyperLink1" runat="server" ImageUrl="~/images/back.gif">HyperLink</asp:HyperLink>
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"
EnableScriptGlobalization="True">
</cc1:ToolkitScriptManager>
</td>
</tr>
</table>
<br />
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>上記を実行する前にVisual Studioのレジストリを以下のように初期化しました。
レジストリエディタを起動して
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio の中にある
9.0 というキーとそのサブキーをすべて削除する。上記はhttp://www.hiro3-soft.com/blog/post/2009/04/13/VS2005-2008-Enviroment-Reset.aspxを参考にさせていただきました。
また、更に困ったことには新しいWebページの追加ができないことです。次のようなメッセージが出力されてしまいます
C:\Users\パピー¥AppData¥Local¥Temp\drcgqzan.ish\logon.aspxへのアクセスが拒否されました
いよいよ八方塞がりのような状況に陥ってしまいました。
わかばマーク -
自己レスです。
>また、更に困ったことには新しいWebページの追加ができないことです。次のようなメッセージが出力されてしまいます
上記は管理者権限でVisual Studioを起動させていなかったのかも知れません。
>いよいよ八方塞がりのような状況に陥ってしまいました。
この際と思ってOSのバージョンアップ(Vista→7)を行い、Visual Studio 2008をアンインストール後、再インストールしました。
これを行ってもテキストボックスのスマートタググリフに「エクステンダーの追加」は出ませんでした
更にVisual Studio 2010評価版をダウンロードしてみました。
さすがに2010では最初からAjax ToolKitはついていました(次のサイトからインストールは必要なようですがhttp://www.microsoft.com/web/gallery/install.aspx?appsxml=&appid=ASPNET;NETFramework4;MVC2;NETEXTENSIBILITY;ISAPIExtensions;ISAPIFilters;StaticContentCompression;DefaultDocument;DirectoryBrowse;HTTPErrors;HTTPLogging;LoggingTools;RequestMonitor;IISManagementConsole;RequestFiltering;SQLExpress;VWD2010;StaticContent)
私の場合、2010のツールボックスにおいてAjax ToolKitはテキストアイコンで表示されます。これはまだ何かし忘れていることがあるのかもしれません。
さて、ツールボックスからFilterdTextExtenderを選んでテキストボックスにドラッグ&ドロップはできるようなのですが(でも進入禁止マークが出ないだけであってコードが追加されないのでできないのと同じ)、テキストボックスのスマートタググリフには「エクステンダーの追加」は出ませんでした。
わかばマーク -
自己レスです。
本件、Ajax Toolkitを.NET4.0で入れ替えたら解決しましたので報告します。
手順は以下のようです。
1.AjaxサイトよりAjaxControlToolkitBinary.NET4.zipをダウンロード
2.上記をD\Visual Studio 2010\AjaxToolkitに解凍
3.上記フォルダのAjaxControlToolkitSampleSite.zipを解凍
4.上記フォルダ中のBinフォルダをコピーして\inetpub\WebYoyaku\Binに貼り付け(前のを削除し貼り付け)
5.VB2010のツールボックスのAjaxToolkitタブを削除
6.その後、ツールボックスにあらたなタブAjax Control Toolkitを作成
7.追加されたAjax Control Toolkitタブ内で右クリックして「アイテムの選択」をクリック
8.「参照」をクリック
9.\inetpub\WebYoyaku\Binフォルダに含まれるAjaxControlToolkit.dllを選択し「開く」をクリック
10.「OK」を選択するとツールボックスにタブコントロールが(以前はテキストアイコンであったが今度はアイコンで)追加された
11.その後、(以前は表示されなかった)TextBoxのスマートタググリフに「エクステンダーの追加」が表示された
12.「エクステンダーの追加」により「FilterTextBoxExtender」の選択が可能となった
以上です。これまで「エクステンダーの追加」がでなかった原因は依然としてはっきりしませんが、構成の問題であったように思います
わかばマーク- 回答としてマーク TasCal 2010年5月16日 2:21