2006年03月31日

あなたもMVPになれるかも!?

MVP プログラム日本サイトのリニューアルとMVP審査応募ページの開設

ということらしいです。私は早速MVP審査に応募しちゃいました。みなさんも応募してみませんか??
タグ:話題

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | その他

2006年03月30日

Atlasのバインディングのサンプル

 Atlasでバインディングを使用するサンプルをここに公開しました。
 ソースを見ただけだとわからない部分も多いと思うので、説明させていただきます。Atlasは、2006 March CTPを使用しています。
 
 サンプルのサイトのファイル構成は以下のようになっています。

AtlasBindingSample
│   Default.aspx
│   Default.aspx.cs
│   eula.rtf
│   readme.txt
│   SupportService.asmx
│   Web.config
│   
├───App_Code
│       Converter.cs
│       KeyValueElemnt.cs
│       SupportService.cs
│       
├───App_Data
└───Bin
        Microsoft.Web.Atlas.dll

 まず、Web.Configですが、ドロップダウンリストで表示するデータが以下のように設定してあります。ASP.NET 1.1でお馴染みのSystem.Configuration.NameValueSectionHandlerを使うものです。
 
  <genre>
<add key="conveni" value="コンピニ"/>
<add key="famires" value="ファミレス"/>
<add key="fastfood" value="ファーストフード"/>
</genre>
<conveni-links>
<add key="http://www.sej.co.jp/index.html" value="セブンイレブン"/>
<add key="http://www.family.co.jp/" value="ファミリーマート"/>
<add key="http://www.lawson.co.jp/" value="ローソン"/>
</conveni-links>
<famires-links>
<add key="http://www.skylark.co.jp/skylark/index.html" value="すかいらーく"/>
<add key="http://www.dennys.co.jp/dj/index.html" value="デニーズ"/>
<add key="http://www.jonathan.co.jp/home/index.asp" value="ジョナサン"/>
</famires-links>
<fastfood-links>
<add key="http://www.mcdonalds.co.jp/" value="マクドナルド"/>
<add key="http://www.mos.co.jp/index.html" value="モスバーガー"/>
<add key="http://www.kfc.co.jp/" value="ケンタッキーフライドチキン"/>
</fastfood-links>
?の間に
 
   <section name="genre" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,& Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<section name="conveni-links" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<section name="famires-links" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<section name="fastfood-links" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

と設定してあるので、(NameValueCollection)ConfigurationSettings.GetConfig("genre")で?内の項目がSystem.Collections.Specialized.NameValueCollectionで取得できます。

 それをAtlas.Sample.Binding.Converter.ToListSystem.Collections.Generic.List<Atlas.Sample.Binding.KeyValueElemnt<string, string>>に変換しています。ジェネリックの説明については省きますがAtlas.Sample.Binding.KeyValueElemnt<TKey, TValue>System.Collections.Generic.KeyValuePairと殆ど同じものと思って下さい。今回のサンプル作成において、System.Collections.Generic.KeyValuePairではうまくいかなかった部分があったので作成しました。

 初期表示の段階でデータをドロップダウンリストに設定している部分が、Default.aspx.cs内のPage_Load関数内の
 
            Genre.DataSource = Converter.ToList((NameValueCollection)ConfigurationSettings.GetConfig("genre"));
Genre.DataBind();
Links.DataSource = Converter.ToList((NameValueCollection)ConfigurationSettings.GetConfig(this.Genre.SelectedValue + "-links"));
Links.DataBind();

の部分になります。ここも特に目新しい部分ではないので説明はしません。

 なお、ドロップダウンリストは、Default.aspx内で、
 
       <asp:DropDownList ID="Genre" runat="server" DataTextField="Value" DataValueField="Key" OnChange="Genre_OnChanged();"></asp:DropDownList>
<asp:DropDownList ID="Links" runat="server" DataTextField="Value" DataValueField="Key"></asp:DropDownList>
と宣言されています。

 今回のサンプルではバインディングの例以外にもAtlasを使っている部分があります。分類(Genre)のドロップダウンの値によって、名称(Links)のドロップダウンの内容が変わる部分です。JavaScriptでWebサービスを使用して<……-links>〜</……-links>のデータを取得して、ドロップダウンリストに設定しているだけですが、Webサービスを使用する部分以外にもAtlasの機能を使っています。まずは、その部分を紹介させていただきます。

 まず、Default.aspxの<script type="text/xml-script">〜</script>の部分に注目します。これもAtlasのXML Scriptという機能の部分です。
 その中の<components>〜</components>内の

               <select id="Genre"/>
<select id="Links" valueProperty="Key" textProperty="Value"/>


という部分がドロップダウンリストの処理の部分で必要なところです。この宣言で、初期表示の段階でAtlasで提供されるJavaScriptのクラスのSys.UI.Selectクラスのインスタンスを作成してくれます。

 idで対象としたいドロップダウンリストのIDの値を指定できます。January 2006 ReleaseではtargetElementだった部分なので、January 2006 Releaseから使用している人には注意が必要な部分です。さらに項目を追加すればプロパティの設定も行ってくれます。
 の「valueProperty="Key" textProperty="Value"」の部分がそれにあたります。
 これは、DropDownListクラスの「DataTextField="Value" DataValueField="Key"」と同じ意味を持つと思ってもらっていいです。データを展開するときに使用します。

 初期表示で作成されたインスタンスをJavaScript内でどう取得できるかというと、$(……).controlでできます。$(……)は以前も説明しましたが、document.getElementById(……)と同じ意味になります。
 「ID="Genre"」のものが取得したければ、$("Genre").controlとします。
 
 $("Genre").controlは、分類(Genre)のドロップダウンリストの選択値を取得する部分で使っています。
 Sys.UI.SelectクラスにはselectedValueという選択値を表すプロパティがあって、コード上で取得する場合は、get_selectedValue()で取得できます。
 蛇足ですが、設定する場合は、set_selectedValue(value)となります。

 Default.aspxの<script type="text/javascript" language="JavaScript">〜</script>の内のGenre_OnChanged関数の

     var genreValue = $("Genre").control.get_selectedValue();

の部分が実際に使用している部分です。

 Genre_OnChanged関数の中では、そうやって取得した分類(Genre)の選択値をWebサービスの関数の引数に渡しています。
 呼び出しているWebサービスのAtlas.Sample.Binding.SupportService.GetLinks関数はWeb.configから<……-links>〜</……-links>のデータをSystem.Collections.Generic.List<Atlas.Sample.Binding.KeyValueElemnt<string, string>>にして返しているだけです。引数の値によって、どの名称(Links)のデータが返るかが違うだけです。

 そのWebサービスから取得したデータを設定しているのがonSearchComplete関数内の部分です。ここで、$("Links").controlを使用しています。Sys.UI.SelectクラスにdataというSystem.Web.UI.WebControls.DropDwonListでいうDataSourceと同じ意味のプロパティがあってそれに「$("Links").control.set_data(results)」として、Webサービスが返してきたデータを設定しています。

 この時に、「valueProperty="Key" textProperty="Value"」が使われて、System.Web.UI.WebControls.DropDwonListで「DataTextField="Value" DataValueField="Key"」が設定されている場合と同じようなデータバインドの動きが行われます。
 この部分も今回のサンプルで紹介したかった部分です。

 最後に肝心のバインディングの部分です。今回のサンプルはアンカー(<a ……>〜</a>)にバインディングを設定しています。
 Default.aspxの<script type="text/xml-script">〜</script>の<components>〜</components>内の

                <hyperLink id="Anchor">
<bindings>
<binding dataContext="Links" dataPath="selectedValue" property="text"/>
<binding dataContext="Links" dataPath="selectedValue" property="navigateURL"/>
</bindings>
</hyperLink>

の部分がその設定をしている部分です。アンカーは

     

と宣言されています。

 dataContextは参照元を表し、dataPathはその参照元のどのプロパティを参照するかを指定します。
 「dataContext="Links" dataPath="selectedValue"」で$("Links").controlのselectedValueプロパティを参照元とするということです。今回のサンプルだと名称(Links)の選択値のチェーンのサイトのURL(例:セブンイレブンのサイトのURL http://www.sej.co.jp/index.html)ということになります。

 propertyは参照元の値を参照先のどこに設定するかということですAtlasSys.UI.HyperLinkクラスにはアンカーの表示文字を表すtextというプロパティとリンク先(<a href="……"の部分)を表すnavigateURLプロパティというものがあって、名称(Links)の選択値をそのそれぞれに設定するということです。

 名称(Links)を変更するとアンカーの文字とリンク先が同時に変わります。

 設定されているものが

                <hyperLink id="Anchor">
<bindings>
<binding dataContext="Links" dataPath="selectedValue" property="navigateURL"/>
</bindings>
</hyperLink>

となっていば、文字はそのままでリンク先だけがかわります。どちらの場合も当然ポストバックは発生しません。

 これがAtlasのバインディングというものです。参照元の値は文字列でなくbool値であっても構いません。チェックボックスのチェック状態によって、文字や入力項目を表示・非表示したりするのにも使えます。

 とても面白い機能だと思います。バインディング以外にも<script type="text/xml-script">〜</script>の<components>〜</components>の部分の宣言とかも便利だと思います。そのお陰で、今回のサンプルも動きの割りにコードが少ないと思います。

 Atlasって、使いこなすととても便利だと思うので、是非チャレンジしてみてくれると嬉しいです。
 今回のサンプルは盛り沢山の反面、わかりづらい部分も多いと思います。その場合は是非質問をお願いします。自分の勉強にもなりますので。
タグ:ASP.NET AJAX

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | ASP.NET

2006年03月29日

とてもためになると思われる記事の紹介

開発者の方にとてもためになると思われるブログの記事を2つほど紹介しておきます。どちらも同じブログのものですけどね。^^;

ソフトウェアの仕様書は料理のレシピに似ている

SEはメニューのないレストランのウェイターか?
タグ:記事

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | その他

2006年03月28日

ASP.NETのMVCフレームワーク

 ASP.NETのMVCフレームワークで[url=http://www.castleproject.org/index.php/MonoRail]MonoRail[/url]というものがあります。

 まだ、ちょっとしか見れてないですが、かなりよさそうです。
ASP.NETにもMVCフレームワークが必要と思っているので、これを広めていきたいと思っています。

 当然、サンプルの公開とか解説とかも考えていますよ?。
タグ:ASP.NET

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | ASP.NET

DotNetNuke Blogモジュールの日本語化リソース

気づくのがちょっと遅かったですけど、コチラでDotNetNuke Blogモジュールの日本語化リソースが公開されています。

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | DotNetNuke

2006年03月23日

Atlas March CTP 公開!

Atlasの新しいバージョン March CTP が公開されました。
ダウンロードはここからできます。

変更点については、コチラが詳しいです。
また、同じサイト内の[url=http://www.exconn.net/Blogs/team03/archive/2006/03/21/8132.aspx]ここ[/url]でAtlas March CTP の新機能であるLive.comのガジェット作成についても書かれているのでご参照下さい。

ASP.NET AJAX >クイックスタートも更新されています。
そこに新しく追加されたクライアント ライブラリ(Javascriptでのクラス群)のリファレンスは、個人的にかなりありがたいです。
タグ:ASP.NET

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | Atlas

2006年03月17日

AtlasでListViewを使用するサンプル

 AtlasでListViewを使用するサンプルをここにアップしました。

解説はあとで書く予定です。
タグ:ASP.NET AJAX

posted by よっしぃ at 23:19 | Comment(0) | TrackBack(0) | ASP.NET

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。