<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>ASP.NET</title><link>http://blogs.wankuma.com/mrt/category/1483.aspx</link><description>ASP.NET</description><managingEditor>Mr.T</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Mr.T</dc:creator><title>SqlDataReaderのGetSchemeTableで、余計な列(フィールド)まで取ってくるときがある。</title><link>http://blogs.wankuma.com/mrt/archive/2009/02/11/167951.aspx</link><pubDate>Wed, 11 Feb 2009 11:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2009/02/11/167951.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/167951.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2009/02/11/167951.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/167951.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/167951.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;#.NetFrameWork2.0　, SQLServer 2005での環境です。  &lt;p&gt;ちなみに、これではないみたいです。&lt;br&gt;[BUG] SqlDataReader の GetSchemaTable() が誤った列名を返す　&lt;a href="http://support.microsoft.com/kb/307512/ja"&gt;http://support.microsoft.com/kb/307512/ja&lt;/a&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;SQLServerからデータを取得して、それをDataTableにセットしたい...でも、フィールドの情報はいちいち指定したくない&lt;/p&gt; &lt;p&gt;という場合に、SqlDataReader.GetSchemaTableによって、テーブルのフィールド情報を取得し、そのフィールド名と&lt;/p&gt; &lt;p&gt;型情報をとってきて、自動的にDataTableへ落とし込む、なんてことをしてたりしますか？&lt;/p&gt; &lt;p&gt;今じゃ古いやり方なのかもしれませんけど、まあベタな方法ですよね。&lt;/p&gt; &lt;p&gt;#それとも、もう、やらないのかなぁ。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;この流れでいうと、まずはDataTaleを用意して、そこにカラムを追加し、データを突っ込むことになりますが、&lt;/p&gt; &lt;p&gt;カラムを用意する時点で、どうもエラーになる。それは、例えば、こんなソース。&lt;/p&gt; &lt;p&gt;&lt;font color="blue"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; targetSchemeDataReader &lt;font color="blue"&gt;As&lt;/font&gt; SqlDataReader = &lt;font color="blue"&gt;Nothing&lt;/font&gt;&lt;br&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; targetScheme &lt;font color="blue"&gt;As&lt;/font&gt; DataTable&lt;br&gt;targetSchemeDataReader = targetSQLCommand.ExecuteReader(CommandBehavior.KeyInfo)&lt;br&gt;targetScheme = targetSchemeDataReader.GetSchemaTable&lt;br&gt;&lt;br&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; fieldNameIndex &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Integer&lt;/font&gt; = targetScheme.Columns(&lt;font color="#c00040"&gt;"ColumnName"&lt;/font&gt;).Ordinal&lt;br&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; typeIndex &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Integer&lt;/font&gt; = targetScheme.Columns(&lt;font color="#c00040"&gt;"DataType"&lt;/font&gt;).Ordinal&lt;br&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; isHiddenIndex &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Integer&lt;/font&gt; = targetScheme.Columns(&lt;font color="#c00040"&gt;"IsHidden"&lt;/font&gt;).Ordinal&lt;br&gt;&lt;br&gt;&lt;font color="blue"&gt;For&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Each&lt;/font&gt; iRow &lt;font color="blue"&gt;As&lt;/font&gt; System.Data.DataRow &lt;font color="blue"&gt;In&lt;/font&gt; targetScheme.Rows&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetDataTable.Columns.Add(iRow.Item(fieldNameIndex).ToString, _　&lt;font color="#ff0000"&gt;←ここでエラー&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type.&lt;font color="blue"&gt;GetType&lt;/font&gt;(&lt;font color="blue"&gt;CType&lt;/font&gt;(iRow.Item(typeIndex), Type).FullName))&lt;br&gt;&lt;font color="blue"&gt;Next&lt;/font&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;br&gt;デバッグしてみると、ストアドプロシジャから返された結果に対して、&lt;strong&gt;意図していないフィールド&lt;/strong&gt;まで&lt;/p&gt; &lt;p&gt;返されていることがわかり、そのフィールドのカラム名がだぶっている様子。&lt;/p&gt; &lt;p&gt;#ダブったのは今回のケースではそうなっただけ&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Ｓｅｌｅｃｔで返す予定になっていたのは、４つのフィールドであるのに、スキーマ情報として取得されたときには、8つのフィールド名&lt;/p&gt; &lt;p&gt;ということで、なぜそんなものまで返されるのか正直わけがわからなかった。&lt;/p&gt; &lt;p&gt;で、調べたところ似たような現象のお方がいた。&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic53804.aspx"&gt;http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic53804.aspx&lt;/a&gt;  &lt;p&gt;&lt;br&gt;なんじゃ、英語でわからんのだけども、ロバートという人こんなこといってます。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;When you specify the CommandBehavior.KeyInfo option, Sql Server will &lt;br&gt;automatically return you the columns in your original select along with the &lt;br&gt;necessary additional columns needed to uniquely identify the rows returned.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;SQLComman.ExeteReader(CommandBehavior.KeyInfo)を使うと、SQLServerは、&lt;/p&gt; &lt;p&gt;行を一意に識別するため、自動的にキー項目を追加する、みたいな感じですね。&lt;/p&gt; &lt;p&gt;これ、どこがソース（情報源）になっているのかわかりませんが、そう考えると納得できます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;さらに、上記の返答のRessには、&lt;/p&gt; &lt;p&gt;IsHiddenという項目があること&lt;/p&gt; &lt;p&gt;取得元がViewであるなら、WITH VIEW_METADATAをつけるとええよ&lt;/p&gt; &lt;p&gt;とか云ってます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;とりあえず、そういうことであれば列情報に違いがあるんじゃないかと思い、比較してみたところ、&lt;/p&gt; &lt;p&gt;メタデータにIsHiddenという項目があることがわかりました。&lt;/p&gt; &lt;p&gt;これを比較すると、こちらがSelect ・・・と指定したフィールドに対しては、True,書いてないフィールドはFalseが&lt;/p&gt; &lt;p&gt;返ってきています。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;そういうわけで、ソースをこんな風に変更。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; targetSchemeDataReader &lt;font color="blue"&gt;As&lt;/font&gt; SqlDataReader = &lt;font color="blue"&gt;Nothing&lt;/font&gt;&lt;br&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; targetScheme &lt;font color="blue"&gt;As&lt;/font&gt; DataTable&lt;br&gt;targetSchemeDataReader = targetSQLCommand.ExecuteReader(CommandBehavior.KeyInfo)&lt;br&gt;targetScheme = targetSchemeDataReader.GetSchemaTable&lt;br&gt;&lt;br&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; fieldNameIndex &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Integer&lt;/font&gt; = targetScheme.Columns(&lt;font color="#c00040"&gt;"ColumnName"&lt;/font&gt;).Ordinal&lt;br&gt;&lt;font color="blue"&gt;Dim&lt;/font&gt; typeIndex &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Integer&lt;/font&gt; = targetScheme.Columns(&lt;font color="#c00040"&gt;"DataType"&lt;/font&gt;).Ordinal&lt;br&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; isHiddenIndex &lt;font color="#0000ff"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="#0000ff"&gt;Integer&lt;/font&gt; = targetScheme.Columns(&lt;font color="#c00040"&gt;"IsHidden"&lt;/font&gt;).Ordinal &lt;font color="#ff0000"&gt;←追加&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font color="blue"&gt;For&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Each&lt;/font&gt; iRow &lt;font color="blue"&gt;As&lt;/font&gt; System.Data.DataRow &lt;font color="blue"&gt;In&lt;/font&gt; targetScheme.Rows&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;If&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;CBool&lt;/font&gt;(iRow.Item(isHiddenIndex)) = &lt;font color="blue"&gt;False&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Then　&lt;/font&gt;&lt;font color="#ff0000"&gt;←追加&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetDataTable.Columns.Add(iRow.Item(fieldNameIndex).ToString, _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type.&lt;font color="blue"&gt;GetType&lt;/font&gt;(&lt;font color="blue"&gt;CType&lt;/font&gt;(iRow.Item(typeIndex), Type).FullName))&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;If　&lt;/font&gt;&lt;font color="#ff0000"&gt;←追加&lt;/font&gt;&lt;br&gt;&lt;font color="blue"&gt;Next&lt;/font&gt; &lt;p&gt; めでたく、必要な情報のみ取得できました。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;って、KeyInfo使えっていってるのは、MSDNサンプルにもあるのに、どういうことなんじゃ！&lt;/p&gt; &lt;p&gt;DataReader の GetSchemaTable メソッドと Visual Basic .NET を使用して列スキーマを取得する方法&lt;/p&gt; &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/310108/ja" href="http://support.microsoft.com/kb/310108/ja"&gt;http://support.microsoft.com/kb/310108/ja&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/167951.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T</dc:creator><title>HttpServerUtility.Executeではクエリパラメータが渡せる</title><link>http://blogs.wankuma.com/mrt/archive/2009/01/07/165826.aspx</link><pubDate>Wed, 07 Jan 2009 15:59:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2009/01/07/165826.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/165826.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2009/01/07/165826.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/165826.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/165826.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;レガシーのASPで、IIS5.0を使っていると、Server.Executeでページ遷移をすることがよくありましたが、&lt;/p&gt; &lt;p&gt;実はURLにクエリ文字列が含められなくて、非常に困っていました。&lt;/p&gt; &lt;p&gt;たとえば、&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Server.Execute("hogehoge.asp?UserCD='**'")&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;みたいなものですね。これは、エラーになります。&lt;/p&gt; &lt;p&gt;⇒IIS の Server.Execute パラメータにクエリ文字列を使用するとエラーが発生する ：&lt;a title="http://support.microsoft.com/kb/247420/ja" href="http://support.microsoft.com/kb/247420/ja"&gt;http://support.microsoft.com/kb/247420/ja&lt;/a&gt;&lt;/p&gt; &lt;p&gt;これは、仕様なのでどうしようもなかったのですね。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ところが、ASP.NETになってから、Server.ExecuteメソッドはHttpServerutilityクラスになってくれて、少なくともASP2.0では&lt;/p&gt; &lt;p&gt;Server.Execute("hogehoge.aspx?UserCD='**'")&lt;/p&gt; &lt;p&gt;がきちんと通るし、hogehoge.aspxでも、UserCDを取得することができました。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;まあ、ASP.NETは別物なんだから、できるようになったといえばそれでオシマイなんですがねw&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/165826.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T</dc:creator><title>Visual Studio 2008で既存のWebサイトで作成したアセンブリファイルを他サイトで利用する場合</title><link>http://blogs.wankuma.com/mrt/archive/2008/10/24/159862.aspx</link><pubDate>Fri, 24 Oct 2008 18:22:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2008/10/24/159862.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/159862.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2008/10/24/159862.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/159862.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/159862.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Visual Studio 2008ですが、おそらく2005でも同じじゃないかと思います。&lt;/p&gt; &lt;p&gt;ASP.NET Webサイトを構築する際、当初、VWD（Visual Web Developer）を利用していたため、&lt;/p&gt; &lt;p&gt;ソリューションファイルは作成できるものの、プロジェクトファイルが作成されません。&lt;/p&gt; &lt;p&gt;もちろん、Webサイトの発行ができるので、アセンブリファイルは当然ながら作成することができます。&lt;/p&gt; &lt;p&gt;発行したフォルダ→BinフォルダにApp_Code.dllというファイルがあるはず。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;まずは、これを参照の追加で、追加します。&lt;/p&gt; &lt;p&gt;独自クラスや、カスタムコントロールはすべてここに集約されていますので、これだけで、独自に利用している名前空間を&lt;/p&gt; &lt;p&gt;指定できるのは、当然ですね。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;この状態で、別ASP.NETアプリケーションから、上記アセンブリファイルを指定しようとする場合、&amp;lt;%@ Register %&amp;gt;ディレクティブを利用&lt;/p&gt; &lt;p&gt;して、aspxファイルで、独自のサーバーコントロールを利用するには、&lt;/p&gt; &lt;p&gt;&amp;lt;%@ Register　Assembly="App_Code" Namespace="MyNameSpace.MyProject" TagPrefix="Original" %&amp;gt;&lt;/p&gt; &lt;p&gt;という形にすれば、&lt;/p&gt; &lt;p&gt;&amp;lt;original:TagName&amp;gt;という形で利用できるようになるはずです。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Webサイトを指定してアプリケーションを作成した場合は、どうしてプロジェクトファイルができないのか不明ですが、&lt;/p&gt; &lt;p&gt;何かの足しになれば。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/159862.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T</dc:creator><title>CustomValidatorを使って複合サーバコントロールに検証用のイベントを追加する</title><link>http://blogs.wankuma.com/mrt/archive/2008/03/05/126397.aspx</link><pubDate>Wed, 05 Mar 2008 14:37:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2008/03/05/126397.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/126397.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2008/03/05/126397.aspx#Feedback</comments><slash:comments>38</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/126397.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/126397.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。 &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ネタ元：&lt;a title="http://www.ailight.jp/blog/kazuk/archive/2008/02/22/14491.aspx" href="http://www.ailight.jp/blog/kazuk/archive/2008/02/22/14491.aspx"&gt;http://www.ailight.jp/blog/kazuk/archive/2008/02/22/14491.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt; ValidatorをASPXファイルに書いていると、やたらと行数を稼いでしまって、なんだか見難いようにも&lt;/p&gt; &lt;p&gt;おもってました。&lt;/p&gt; &lt;p&gt;今回は、今のプロジェクトで利用しているカスタムのコントロールに検証機能を追加するようにしてみたものです。&lt;/p&gt; &lt;p&gt;#コントロールは、プロジェクトで使用する製品CDのようなコード群をTextBox形式で扱うためのコントロールです。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;入力値は必ずチェックをするものなので、基本チェックは何をしなくてもValidして欲しい、&lt;/p&gt; &lt;p&gt;更に、必要であれば個別にValidate処理を実装できるようにする必要がありました。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="SourceBox"&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Protected&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Overrides&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt; CreateChildControls()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameTextBox = &lt;font color="blue"&gt;New&lt;/font&gt; TextBox&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameTextBox.ID = NameTextBoxID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameTextBox.Width = &lt;font color="blue"&gt;Me&lt;/font&gt;.NameWidth&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameValidator = &lt;font color="blue"&gt;New&lt;/font&gt; CustomValidator&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;With&lt;/font&gt; nameValidator&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ID = NameValidatorID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ValidationGroup = _validateGroupName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Text = &lt;font color="#c00040"&gt;"*"&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;With&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;AddHandler&lt;/font&gt; nameValidator.ServerValidate, &lt;font color="blue"&gt;AddressOf&lt;/font&gt; OnServerValid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Controls.Clear()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Controls.Add(nameTextBox)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Controls.Add(nameValidator)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Private&lt;/font&gt; _targetServerValidateEventArgs &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventArgs&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Public&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt; NameBoxValidate()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Me&lt;/font&gt;.EnsureChildControls()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _targetServerValidateEventArgs = &lt;font color="blue"&gt;New&lt;/font&gt; ServerValidateEventArgs(nameTextBox.Text, &lt;font color="blue"&gt;False&lt;/font&gt;)　...(*1)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Me&lt;/font&gt;.OnTextServerValidate(&lt;font color="blue"&gt;Me&lt;/font&gt;, _targetServerValidateEventArgs)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameValidator.IsValid = _targetServerValidateEventArgs.IsValid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt; &lt;/p&gt;&lt;font color="green"&gt;'サーバ上での基本Valid処理&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Private&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt; OnServerValid(&lt;font color="blue"&gt;ByVal&lt;/font&gt; source &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Object&lt;/font&gt;, &lt;font color="blue"&gt;ByVal&lt;/font&gt; events &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventArgs)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;If&lt;/font&gt; ************ &lt;font color="blue"&gt;Then&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; events.IsValid = &lt;font color="blue"&gt;False&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameValidator.ErrorMessage = Resources.****&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Else&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; events.IsValid = &lt;font color="blue"&gt;True&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameValidator.ErrorMessage = &lt;font color="blue"&gt;String&lt;/font&gt;.Empty&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;If&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Private&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Shared&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;ReadOnly&lt;/font&gt; EventTextServerValidateKey &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Object&lt;/font&gt; = &lt;font color="blue"&gt;New&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Object&lt;/font&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Public&lt;/font&gt; Custom &lt;font color="blue"&gt;Event&lt;/font&gt; TextServerValidate &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventHandler&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;AddHandler&lt;/font&gt;(&lt;font color="blue"&gt;ByVal&lt;/font&gt; value &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventHandler)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Events.&lt;font color="blue"&gt;AddHandler&lt;/font&gt;(EventTextServerValidateKey, value)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;AddHandler&lt;/font&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;RemoveHandler&lt;/font&gt;(&lt;font color="blue"&gt;ByVal&lt;/font&gt; value &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventHandler)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Events.&lt;font color="blue"&gt;RemoveHandler&lt;/font&gt;(EventTextServerValidateKey, value)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;RemoveHandler&lt;/font&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;RaiseEvent&lt;/font&gt;(&lt;font color="blue"&gt;ByVal&lt;/font&gt; sender &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Object&lt;/font&gt;, &lt;font color="blue"&gt;ByVal&lt;/font&gt; e &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventArgs)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;CType&lt;/font&gt;(Events(EventTextServerValidateKey), ServerValidateEventHandler).Invoke(&lt;font color="blue"&gt;Me&lt;/font&gt;, e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;RaiseEvent&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Event&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Protected&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Overridable&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt; OnTextServerValidate(&lt;font color="blue"&gt;ByVal&lt;/font&gt; source &lt;font color="blue"&gt;As&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Object&lt;/font&gt;, &lt;font color="blue"&gt;ByVal&lt;/font&gt; e &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventArgs)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;Dim&lt;/font&gt; validateHandler &lt;font color="blue"&gt;As&lt;/font&gt; ServerValidateEventHandler = &lt;font color="blue"&gt;CType&lt;/font&gt;(Events(EventTextServerValidateKey), ServerValidateEventHandler)&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnsureChildControls()&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameValidator.Validate()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;If&lt;/font&gt; EventTextServerValidateKey IsNot &lt;font color="blue"&gt;Nothing&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Then&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; validateHandler(&lt;font color="blue"&gt;Me&lt;/font&gt;, e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;If&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="blue"&gt;End&lt;/font&gt;&amp;nbsp;&lt;font color="blue"&gt;Sub&lt;/font&gt; &lt;br&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ASPX側では、&lt;/p&gt; &lt;p&gt;Protected Sub 個別Valid(byval sender as Object,byval e as ServerValidateEventArgs) handles CustomControl.TextServerValidate &lt;/p&gt; &lt;p&gt;&amp;nbsp; ほにゃらら～&lt;/p&gt; &lt;p&gt;　ここで独自のチェックができるぞよ～&lt;/p&gt; &lt;p&gt;end Sub&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;そんなに難しいわけじゃないんですが、OnServerValidの呼び出しの際、ServerValidateEventArgsオブジェクトのパラメータを &lt;p&gt;どうするべと悩んだのはないしょです。 &lt;p&gt;Clickイベントなどであれば、EventArgs.Emptyをパラメータとして渡せばよいわけですが、今回は、ServerValidateEventArgsなので、 &lt;p&gt;ServerValidateEventArgs.Emptyを渡せません。 &lt;p&gt;そんなら、インスタンスを渡せばええんかいな～と調べてみて、 &lt;p&gt;&lt;a title="http://msdn2.microsoft.com/en-gb/library/system.web.ui.webcontrols.servervalidateeventargs.servervalidateeventargs(ja-jp,VS.80).aspx" href="http://msdn2.microsoft.com/en-gb/library/system.web.ui.webcontrols.servervalidateeventargs.servervalidateeventargs(ja-jp,VS.80).aspx"&gt;http://msdn2.microsoft.com/en-gb/library/system.web.ui.webcontrols.servervalidateeventargs.servervalidateeventargs(ja-jp,VS.80).aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ここで、Valueと、IsValidを指定すればよいことがわかったので、そのまま&lt;strong&gt;(*1)&lt;/strong&gt;実装。&lt;/p&gt; &lt;p&gt;で、渡したパラメータに対して、CustomValidatorコントロールのIsValidに結果をわたせばいいです。&lt;/p&gt; &lt;p&gt;検証コントロールなんかなくなってしまって、いい感じです。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/126397.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T</dc:creator><title>SQLServer2005で、FOR XML を使うと「同じ XML タグに同じ属性を複数回生成することはできません」と怒られる。</title><link>http://blogs.wankuma.com/mrt/archive/2008/02/15/123303.aspx</link><pubDate>Fri, 15 Feb 2008 18:35:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2008/02/15/123303.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/123303.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2008/02/15/123303.aspx#Feedback</comments><slash:comments>34</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/123303.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/123303.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;私自身、XMLってのはほとんど利用したことがない人で、使い道もよくわかっていないのですが、&lt;/p&gt; &lt;p&gt;TreeViewコントロールを使おうと決定してから、XMLでうんうん悩んでプログラムしています。&lt;/p&gt; &lt;p&gt;#System.Web.UI.WebControls.TreeViewクラスの方です。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;TreeViewにはXMLDataSourceを利用して、データをバインドすることにしたので、&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;XMLDataSource.data = XMLデータ&lt;/p&gt; &lt;p&gt;TreeView.DataSourceID = XMLDataSource.ID&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;みたいな感じにしてやればあっさりバインドしてくれます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;さて、簡単にSQLServerでテーブルから、XMLとしてデータを取り出そうという場合、&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;select hoge1,hoge2,hoge3 from Table &lt;strong&gt;for XML AUTO&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;と書けば、すぐにXMLデータが取り出せます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;詳細にしたい場合は、Auto以外の指定もできるので、下のところを参考にしてみればよいと思います。&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/ja-jp/library/ms175140.aspx"&gt;RAW モードの使用&lt;/a&gt;&lt;br&gt;&lt;a href="http://msdn2.microsoft.com/ja-jp/library/ms188273.aspx"&gt;AUTO モードの使用&lt;/a&gt;&lt;br&gt;&lt;a href="http://msdn2.microsoft.com/ja-jp/library/ms189068.aspx"&gt;EXPLICIT モードの使用&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;私がやっていたことは、&lt;/p&gt; &lt;p&gt;&amp;lt;工場からこうば&amp;gt;&lt;/p&gt; &lt;p&gt;　&amp;lt;工場 CD="1" Name="本社工場"&amp;gt;&lt;/p&gt; &lt;p&gt;　　　&amp;lt;こうば CD="111"　Name=”Aこうば”＞&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;製品 CD="111000" Name="製品A"/&amp;gt;&lt;/p&gt; &lt;p&gt;　　　&amp;lt;/こうば＞&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;lt;/工場&amp;gt; &lt;p&gt;&amp;lt;/工場からこうば&amp;gt;&lt;/p&gt; &lt;p&gt;こんな感じのデータをイメージしてました。全てのノードで、属性が、CDとNameの二つがあります。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;なので、これをとりだそうとして、Selectをかけようと思い、&lt;/p&gt; &lt;p&gt;select 工場.工場コード as [CD],工場.工場名 as [Name]&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,こうば.こうばコード as [CD],こうば.こうば名 as [Name]&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,製品.製品コード as [CD],製品.製品名 as [Name]&lt;/p&gt; &lt;p&gt;from T_工場 工場&lt;/p&gt; &lt;p&gt;inner join T_工場リレーション&lt;/p&gt; &lt;p&gt;....&lt;/p&gt; &lt;p&gt;inner join T_こうば こうば&lt;/p&gt; &lt;p&gt;.....&lt;/p&gt; &lt;p&gt;inner join T_こうばリレーション&lt;/p&gt; &lt;p&gt;.....&lt;/p&gt; &lt;p&gt;#工場リレーションなどのテーブルは、工場とこうばの結びつきのデータが入ってます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ところが、これをXML AUTOで出そうとすると怒られる。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;列名 'CD' が繰り返されています。同じ XML タグに同じ属性を複数回生成することはできません。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;メッセージから、すると、一つのノードに対して、CDを複数指定しているということだから、きちんとノードとして&lt;br&gt;それぞれのデータが認識されていないということになる。&lt;/p&gt; &lt;p&gt;ううん？なぜ、と思い、色々調べてみたのだけど、どうもいまいちわからない。&lt;/p&gt; &lt;p&gt;上記リンク先のAUTOモードの使用では、このように説明されている。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;FROM 句の各テーブルは XML 要素として表され、そのうち少なくとも 1 列が SELECT 句のリストに含められます。FOR XML 句で省略可能な ELEMENTS オプションを指定すると、SELECT 句のリストに含められる列は属性またはサブ要素にマップされます。  &lt;p&gt;生成される XML 内の要素が入れ子になった XML 階層は、SELECT 句で指定されている列で識別されるテーブルの順序に基づきます。そのため、SELECT 句で列名を指定する順序は重要です。先頭、つまり識別された左端のテーブルにより、生成される XML ドキュメント内の最上位要素が形成されます。SELECT ステートメント内の列で識別された左から 2 番目のテーブルにより、最上位要素内のサブ要素が形成されます。以降についても同様です。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;テーブルが要素となり、指定している順番にサブ要素となる（つまり子になる）。同じテーブルから参照されるデータは、要素の属性となる&lt;/p&gt; &lt;p&gt;ということが書いてあります。&lt;/p&gt; &lt;p&gt;なのに、これじゃあ、指定ができない。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;で、試行錯誤（Try&amp;amp;Error）してみたところ、こういうのはできるようです。&lt;/p&gt; &lt;p&gt;with 工場　as (&lt;/p&gt; &lt;p&gt;&amp;nbsp; select ~ from T_工場&lt;/p&gt; &lt;p&gt; inner join T_工場リレーション&lt;/p&gt; &lt;p&gt; on ....&lt;/p&gt; &lt;p&gt;)&lt;/p&gt; &lt;p&gt;,with こうば as (&lt;/p&gt; &lt;p&gt; select ~ from T_こうば&lt;/p&gt; &lt;p&gt;　inner join T_こうば&lt;/p&gt; &lt;p&gt; on ....&lt;/p&gt; &lt;p&gt;)&lt;/p&gt; &lt;p&gt;select 工場.工場コード as [CD],工場.工場名 as [Name] &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,こうば.こうばコード as [CD],こうば.こうば名 as [Name] &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,製品.製品コード as [CD],製品.製品名 as [Name] &lt;p&gt;from 工場 &lt;p&gt;inner join こうば&lt;/p&gt; &lt;p&gt;on 工場.こうばコード= こうば.こうばコード&lt;/p&gt; &lt;p&gt;....&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;CTE（共通テーブル式)を利用して、こういう形にするとできるんです。やっていることは一緒なんですけどね。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;CTEを使った場合は、T_~リレーションというテーブルは最終XMLとして利用するSQL内には出てきませんので、&lt;/p&gt; &lt;p&gt;それが原因なのかなと思ってみたりもしたのですが、意味がよくわかりません。&lt;/p&gt; &lt;p&gt;今でも納得はできていないのです。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/123303.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T</dc:creator><title>TreeNodeのLevelとDepth</title><link>http://blogs.wankuma.com/mrt/archive/2008/02/08/122187.aspx</link><pubDate>Fri, 08 Feb 2008 11:51:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2008/02/08/122187.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/122187.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2008/02/08/122187.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/122187.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/122187.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;現在作成しているWebアプリケーションではTreeViewを頻繁に利用しているが、&lt;/p&gt; &lt;p&gt;そのときノードの深さを知りたいなと思い、たしかそんなプロパティがあったはず（でも、度忘れ）で、MSDNを調べてみた。&lt;/p&gt; &lt;p&gt;TreeViewのノードのプロパティ一覧から...あったよ&lt;strong&gt;Levelプロパティ&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;うん、感覚的にLevelってのはわかりやすかったので、素直に以下のページへ。&lt;/p&gt; &lt;p&gt;&lt;a title="http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.treenode.level(vs.80).aspx" href="http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.treenode.level(vs.80).aspx"&gt;http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.treenode.level(vs.80).aspx&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;Level&lt;/b&gt; プロパティの場合、ルート ノードは入れ子の最初のレベルと見なされ、0 が返されます。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;よしよしと、Treeview.Levelと打とうとしたら、アレレ...インテリセンスがきかへん。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;あれ？と思って前のページを見直すと、System.Windows.Forms名前空間であるのに気がついた。&lt;/p&gt; &lt;p&gt;いや、そうじゃないんだ、System.Web.UI.WebControls 名前空間を調べないと。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;で、同じように、検索して&lt;strong&gt;Levelプロパティ&lt;/strong&gt;を探す。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ない...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;いや、おかしい、絶対あるはずと更に一覧を眺めると、&lt;strong&gt;Depth&lt;/strong&gt;プロパティ...ナニ...？&lt;/p&gt; &lt;p&gt;&lt;a title="http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.treenode.depth(VS.80).aspx" href="http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.treenode.depth(VS.80).aspx"&gt;http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.treenode.depth(VS.80).aspx&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;Depth&lt;/b&gt; プロパティを使用して、ノードの深さを確認します。深さは、ノードとルート ノードの間の階層構造のレベル数を表します。たとえば、ルート ノードの深さは 0 です。ルート ノードの子ノードの深さは 1 です。以下同様です。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;統一してないのね、&lt;/strong&gt;こういうの。&lt;/p&gt; &lt;p&gt;ええ、開発チームが違うんでしょ。わかってますよ。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;感覚的には、Levelがわかりやすいと思ったけど、Depthの方が日本語に近いのかな（深さとレベル）&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;でも、これって「ふいんき（変換できない）」 VS 「雰囲気」な的違いじゃね？と思ったりするのは、私だけでしょうか。&lt;/p&gt; &lt;p&gt;#いや違う。違うはずだ。違う...よね？&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/122187.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T(mrt@wankuma.com)</dc:creator><title>StateServerについてのメモ</title><link>http://blogs.wankuma.com/mrt/archive/2007/10/31/105165.aspx</link><pubDate>Wed, 31 Oct 2007 12:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2007/10/31/105165.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/105165.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2007/10/31/105165.aspx#Feedback</comments><slash:comments>133</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/105165.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/105165.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;&lt;font size="1"&gt;実は、こっそり、インスパイア。 &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://d.hatena.ne.jp/NAL-6295/20071030/p1" href="http://d.hatena.ne.jp/NAL-6295/20071030/p1"&gt;http://d.hatena.ne.jp/NAL-6295/20071030/p1&lt;/a&gt;&lt;/p&gt; &lt;p&gt;StateServerは、ASP.NETを利用する上でSession情報を保持する際に、ASP.NET State Serviceというものを&lt;br&gt;利用します。&lt;/p&gt; &lt;h2&gt;[サーバ側設定]&lt;/h2&gt; &lt;p&gt;IISをインストールしていないとサービス自体が、出てこないので注意すること。&lt;br&gt;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;まずは、これを読むこと。けんけんふくよー。&lt;br&gt;&lt;a title="http://msdn2.microsoft.com/ja-jp/library/ms178586(VS.80).aspx" href="http://msdn2.microsoft.com/ja-jp/library/ms178586(VS.80).aspx"&gt;http://msdn2.microsoft.com/ja-jp/library/ms178586(VS.80).aspx&lt;/a&gt;  &lt;li&gt; &lt;p&gt;サービスを起動させる。&lt;br&gt;サービス名は「ASP.NET State Service」&lt;br&gt;初期状態で起動は、手動であるため、「手動」→「自動」に挙げておくこと。&lt;/p&gt; &lt;li&gt; &lt;p&gt;Firewallの設定を行う。&lt;br&gt;基本は、tcp 42424を使うので、それを通過するように指定。&lt;/p&gt; &lt;li&gt; &lt;p&gt;このままクライアント側からのアクセスを受け付けると、実は次のようなエラーになる。&lt;/p&gt; &lt;p&gt; &lt;blockquote&gt;セッション状態要求をセッション状態サーバーに対して作成できませんでした。ASP.NET 状態サービスが開始されていて、クライアントとサーバーのポートが同じであることを確認してください。サーバーがリモート コンピュータ上にある場合、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection の値を調べて、このコンピュータがリモート要求を受け付けることを確認してください。サーバーがローカル コンピュータ上にあり、上記のレジストリ値が存在していないか 0 に設定されている場合、状態サーバー接続文字列ではサーバー名に 'localhost' または '127.0.0.1' を指定しなければなりません。&lt;/blockquote&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;なので、指定している通り、&lt;br&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection&lt;br&gt;を調べて、なければつくる。値を0→1に変更&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;[クライアント側設定]&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;VS2005やWVDなら、既定のWebConfig内容では、sessionStateに関する表記が&lt;strong&gt;ない&lt;/strong&gt;。自前で、&amp;lt;sessionState&amp;gt;タグを書くこと。&lt;br&gt;表記の、&lt;strong&gt;大文字小文字&lt;/strong&gt;には、注意すること、でないと、次のようなエラーになる。  &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;説明: &lt;/b&gt;この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。 &lt;br&gt;&lt;b&gt;パーサー エラー メッセージ: &lt;/b&gt;認識されない属性 'Mode' です。この属性は、大文字小文字を区別します。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;この時点で最低限な設定は、&lt;br&gt;&amp;lt;sessionState mode="StateServer"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stateConnectionString="tcpip=****:42424"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cookieless="false"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timeout="20"/&amp;gt;  &lt;p&gt;くらいで接続できる。&lt;br&gt;&lt;/p&gt; &lt;p&gt;あとは、特に設定なしでSession変数を利用することになる。&lt;/p&gt; &lt;p&gt;&lt;br&gt;もし、SateServerを複数台にしてみたい場合は、こちらを参考に。→&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.wankuma.com/naka/archive/2007/06/24/81917.aspx"&gt;State Serverはシングルポイントじゃないよ&lt;/a&gt;&lt;/p&gt; &lt;p&gt;関連リンク：&lt;a href="http://naka.wankuma.com/site/column/aspnet/00012.htm"&gt;ASP.NETでInProcを使ってはいけない&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/105165.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T(mrt@wankuma.com)</dc:creator><title>DataBinding.Evalを使わない（続き）</title><link>http://blogs.wankuma.com/mrt/archive/2007/09/16/96553.aspx</link><pubDate>Sun, 16 Sep 2007 16:43:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2007/09/16/96553.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/96553.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2007/09/16/96553.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/96553.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/96553.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;&lt;a title="http://blogs.wankuma.com/mrt/archive/2007/09/13/96121.aspx#FeedBack" href="http://blogs.wankuma.com/mrt/archive/2007/09/13/96121.aspx#FeedBack"&gt;http://blogs.wankuma.com/mrt/archive/2007/09/13/96121.aspx#FeedBack&lt;/a&gt;の続きになりますかね。&lt;/p&gt; &lt;p&gt;そもそも、Evalを使わないとなると明示的にCastすることになります。Castはいいんですが、&lt;/p&gt; &lt;p&gt;&amp;lt;ItemTemplate&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%# ((DbDataRecord)Container.DataItem).GetString(0) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%# ((DbDataRecord)Container.DataItem).GetInt(1) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br&gt;&amp;lt;/ItemTemplate&amp;gt;  &lt;p&gt;こんな使い方になりますね。（C#ですけど）えらく面倒というか、やはりもっと明示的に、直感的に指定したいです。&lt;/p&gt; &lt;p&gt;たとえば、表示したいViewは、こんなのとします。&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0" width="100" border="1" unselectable="on"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;th&gt;工場コード&lt;/th&gt; &lt;th&gt;工場名&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="50"&gt;10&lt;/td&gt; &lt;td valign="top" width="50"&gt;工場A&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="50"&gt;20&lt;/td&gt; &lt;td valign="top" width="50"&gt;工場B&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="50"&gt;30&lt;/td&gt; &lt;td valign="top" width="50"&gt;工場C&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;単なるマスタですが、そもそもこんな感じで表示するケースが基本じゃないかと思います。&lt;/p&gt; &lt;p&gt;で、これを表示するためのソースです。&lt;/p&gt; &lt;p&gt;（データソースコントロール）&lt;/p&gt; &lt;p&gt;Namespace MRT.OriginalControls  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '製造原価関連データベースへのアクセス用 データソース基底クラス&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp;&amp;nbsp;&amp;nbsp; データソースクラス&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AspNetHostingPermission(SecurityAction.LinkDemand, _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; level:=AspNetHostingPermissionLevel.Minimal), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AspNetHostingPermission(SecurityAction.InheritanceDemand, _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; level:=AspNetHostingPermissionLevel.Minimal), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToolboxData("&amp;lt;{0}:OriginalDataSource runat=""Server""/&amp;gt;"), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description("カスタムデータソース")&amp;gt; _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Class OriginalSource&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inherits DataSourceControl  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Implements IDataSourceOtherControlParameter  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Const DefaultViewName As String = "defaultview"  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '唯一のView名を返す&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Overrides Function GetViewNames() As System.Collections.ICollection&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim viewNames() As String = New String() {DefaultViewName}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return CType(viewNames, ICollection)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '既定のViewを返す&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _defaultView As OriginalDataSorceView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private ReadOnly Property DefaultView() As OriginalDataSorceView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (_defaultView Is Nothing) Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _defaultView = New OriginalDataSorceView(Me, DefaultViewName)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _defaultView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Overrides Function GetView(ByVal viewName As String) As System.Web.UI.DataSourceView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (viewName = String.Empty) Or _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (viewName.ToLower = DefaultViewName.ToLower) Then  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return DefaultView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Throw New ArgumentOutOfRangeException(viewName)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Class  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '規定のDataSourceView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Class OriginalDataSorceView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inherits DataSourceView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Implements IDataSourceOtherControlParameter  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _owner As OriginalSource&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub New(ByVal owner As OriginalSource, ByVal name As String)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyBase.New(owner, name)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _owner = owner&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub 'New  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'ここでSelectしまっせ。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Overrides Function ExecuteSelect(ByVal arguments As System.Web.UI.DataSourceSelectArguments) As System.Collections.IEnumerable  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim connectionString As String = "Data Source=****"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim targetStoredProcedure As String = "dbo.GetFactoryTable"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim targetDataReader As SqlDataReader&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim targetView As Queue(Of FactoryView) = New Queue(Of FactoryView)  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Using targetSQLConnection As SqlConnection = New SqlConnection(connectionString)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Using targetSQLCommand As SqlCommand = New SqlCommand(targetStoredProcedure, targetSQLConnection)  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '処理はパラメータ追加してのち、ストアドで実行&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetSQLCommand.Connection.Open()  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetSQLCommand.CommandType = CommandType.StoredProcedure&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetDataReader = targetSQLCommand.ExecuteReader(CommandBehavior.CloseConnection)  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim fieldsCount As Integer = targetDataReader.FieldCount&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; While targetDataReader.Read()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim newView As FactoryView = New FactoryView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newView.FactoryCD = targetDataReader.GetValue(0).ToString&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newView.FactoryName = targetDataReader.GetValue(1).ToString&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetView.Enqueue(newView)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End While  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return targetView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Using&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Using  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Class  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'アクセスされるView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Class FactoryView  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _factoryCD As String&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Property FactoryCD() As String&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _factoryCD&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _factoryCD = value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _factoryName As String&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Property FactoryName() As String&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _factoryName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _factoryName = value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Class  &lt;p&gt;End Namespace &lt;p&gt;（表示コントロール）&lt;/p&gt; &lt;p&gt;Namespace MRT.OriginalControls  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'リスト表示するためのカスタムコントロール&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AspNetHostingPermission(System.Security.Permissions.SecurityAction.Demand, _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; level:=AspNetHostingPermissionLevel.Minimal), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AspNetHostingPermission(System.Security.Permissions.SecurityAction.InheritanceDemand, _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; level:=AspNetHostingPermissionLevel.Minimal), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToolboxData("&amp;lt;{0}:OriginalList runat=""Server""&amp;gt;&amp;lt;/{0}:OriginalList&amp;gt;"), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description("リスト表示用カスタム"), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ParseChildren(True)&amp;gt; _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Class OriginalList&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inherits CompositeDataBoundControl  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private targetItemTemplate As ITemplate  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'コンテナ設定箇所&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PersistenceMode(PersistenceMode.InnerProperty), _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TemplateContainer(GetType(MasterContainer))&amp;gt; _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Overridable Property ItemTemplate() As ITemplate&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return targetItemTemplate&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As ITemplate)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetItemTemplate = value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'コントロール作成部分&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Overrides Function CreateChildControls(ByVal dataSource As IEnumerable, _&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal dataBinding As Boolean) As Integer&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim loopCount As Integer = 0&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim targetEnumerator As IEnumerator = dataSource.GetEnumerator&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim listItemView As MasterContainer  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Controls.Clear()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; While targetEnumerator.MoveNext()  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listItemView = New MasterContainer(CType(targetEnumerator.Current, FactoryView))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'テンプレートへの格納&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '上記のITemplateは、テンプレート適用のためのプロパティ&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetItemTemplate.InstantiateIn(listItemView)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (dataBinding = True) Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'バインドしないものはデータバインド処理にならない&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listItemView.DataBind()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Controls.Add(listItemView)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loopCount += 1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End While  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return loopCount&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Class  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'コンテナ&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Class MasterContainer&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inherits Control&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Implements INamingContainer '一意の名前をつけるために必要  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub New(ByVal targetView As FactoryView)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FactoryItem = targetView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _factoryItem As FactoryView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Property FactoryItem() As FactoryView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _factoryItem&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As FactoryView)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _factoryItem = value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Class&lt;br&gt;End Namespace&lt;/p&gt; &lt;p&gt;（ASPXファイル） &lt;p&gt;&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;&lt;br&gt;&amp;lt;%@ Register TagPrefix="MyControl" Namespace="MRT.OriginalControls"%&amp;gt;  &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;lt;html xmlns="&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml"&lt;/a&gt; &amp;gt;&lt;br&gt;&amp;lt;head runat="server"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;無題のページ&amp;lt;/title&amp;gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form id="form1" runat="server"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;MyControl:OriginalSource runat="server" ID="OriginalDataSource1" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table border ="1"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;MyControl:OriginalList runat="server" ID="list1" DataSourceID="OriginalDataSource1"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemTemplate&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%# container.FactoryItem.FactoryCD%&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%# container.FactoryItem.FactoryName%&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemTemplate&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/MyControl:OriginalList&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br&gt;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;とりあえず、ひとつのViewだけが対象になってるので、ソレ（ここではFactoryView)しか出てきません。&lt;br&gt;それに、取得条件も変更できるようにはなっていませんが...&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;container.FactoryItem.FactoryCD&lt;/font&gt;&lt;/p&gt; &lt;p&gt;こうやって、かけるようになりました。ありがとう&amp;gt;菊池さん&lt;/p&gt; &lt;p&gt;さて、菊池さんのBlogではExecuteSelectの部分がのってません。当たり前ですが、ここは何を扱うかで中身が&lt;br&gt;違うからなんですね。&lt;/p&gt; &lt;p&gt;キモは、IEnumerable で返さないといけないってことです。&lt;br&gt;今回はQueueを使いましたが、順序とか特にきにしないなら、Listでも返せます。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/96553.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T(mrt@wankuma.com)</dc:creator><title>DataBinding.Evalを使わない</title><link>http://blogs.wankuma.com/mrt/archive/2007/09/13/96121.aspx</link><pubDate>Thu, 13 Sep 2007 21:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2007/09/13/96121.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/96121.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2007/09/13/96121.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/96121.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/96121.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。&lt;/p&gt; &lt;p&gt;ASP.NETでデータバインドの際に使われるDataBinding.Evalって使ってます？&lt;br&gt;私は、今のメインで行っているプログラム(ASP.NET）では、このEvalはまったく使ってません。&lt;br&gt;というのも、&lt;/p&gt; &lt;p&gt;インテリセンス大好きだから&lt;/p&gt; &lt;p&gt;.(ドット)を打って一覧に出てこないのは悪です（適当）&lt;br&gt;&lt;/p&gt; &lt;p&gt;Eval使わずにどうやってGridViewとかを使うんじゃ、となると、&lt;/p&gt; &lt;p&gt;菊池 Blog:なま暖かくて柔らかい、ちょっと触るとプルプル動く&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.ailight.jp/blog/kazuk/archive/2006/11/05/13271.aspx" href="http://www.ailight.jp/blog/kazuk/archive/2006/11/05/13271.aspx"&gt;http://www.ailight.jp/blog/kazuk/archive/2006/11/05/13271.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;#古いエントリへのトラックバックってなんか申し訳ないような気がするのは、私だけ？&lt;/p&gt; &lt;p&gt;で、のってたC#をVB.NETにしこしこ置き換えて、つくってるということをしてます。機会をみて&lt;br&gt;サンプルをのせようとおもいます。&lt;br&gt;#その際にはツッコミ、お願いします&amp;gt;皆様&lt;/p&gt; &lt;p&gt;HogeDataSourceにプロパティ作成して、どのデータを呼ぶかをEnum定義でそれをASPXで簡単設定&lt;br&gt;ただ、編集なんかはまだサポートしてない。単純に表示するだけのListBOXしかつくってねーんですが。&lt;/p&gt; &lt;p&gt;Evalつかわねー場合、コンテナに入れる独自のViewをつくんなくちゃいけないんですが、&lt;/p&gt; &lt;p&gt;Public Class HogeView&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private _hogeProperty as String&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pubic Property HogeProperty () as String&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _hogeProperty&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal Value As Integer)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _hogeProperty =value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end Set&lt;br&gt;end Class&lt;/p&gt; &lt;p&gt;こうやったら、&amp;lt;%# Container.HogeView.HogeProperty%&amp;gt;でかける。このかけたときの快感はわすれられねーです。&lt;br&gt;まあ、ExecuteSelectで返すのが、IEnumerableなので、最初にここではまったんですがね。&lt;br&gt;ええ、だって見事にDataRowView派生をつくらなくてはいけない道にはまりましたから。orz&lt;/p&gt; &lt;p&gt;実は、HogeProperty をプロパティにしてるのはきちんと理由があって、Public HogeProperty as String&lt;br&gt;ってしちゃうとエラーになりまする。&lt;br&gt;#これも別エントリにしようかなぁ。&lt;/p&gt; &lt;p&gt;関係ないですが、この記事を読んで、しびれたんですね。ビリビリと。&lt;br&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;プログラマという職業の人がいればきっとできるよ。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;カッコエエ。「オレもプログラマになりたーい」と半分素人な私。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/mrt/aggbug/96121.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mr.T(mrt@wankuma.com)</dc:creator><title>HTTPContext Is Nothing</title><link>http://blogs.wankuma.com/mrt/archive/2007/09/03/93732.aspx</link><pubDate>Mon, 03 Sep 2007 15:21:00 GMT</pubDate><guid>http://blogs.wankuma.com/mrt/archive/2007/09/03/93732.aspx</guid><wfw:comment>http://blogs.wankuma.com/mrt/comments/93732.aspx</wfw:comment><comments>http://blogs.wankuma.com/mrt/archive/2007/09/03/93732.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/mrt/comments/commentRss/93732.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/mrt/services/trackbacks/93732.aspx</trackback:ping><description>&lt;p&gt;Mr.Tです、こんにちは。 &lt;p&gt;　いわゆる非同期で扱いたい場合の処理では、Threadを使いページのリロードを行いつつ結果をまたせる、という処理を行う。  &lt;p&gt;　この手のものはよくあるのかもしれないのだが、そこで一つ重大な問題点がある。  &lt;p&gt;&amp;nbsp; &lt;p&gt;　HttpContext.currentが取得できない！ &lt;p&gt;　ちょうど、thread.start()のメソッドを実行したときから取得できなくなる。  &lt;p&gt;　うーん、うーん、どーして？似たような事例がないかと思ったが、世界は広い。  &lt;p&gt;　それが、コレ：&lt;a href="http://www.velocityreviews.com/forums/t58163-httpcontext-is-nothing-in-new-thread-inside-a-control.html"&gt;http://www.velocityreviews.com/forums/t58163-httpcontext-is-nothing-in-new-thread-inside-a-control.html&lt;/a&gt; &lt;p&gt;　英語だが、そう難しい単語もないので、なんとか意味は取れたと思うが...  &lt;p&gt;　原因わかってねーじゃん。パラメータとして渡せ、ってことしか書いてねえ。  &lt;p&gt;&amp;nbsp; &lt;p&gt;　確かに、パラメータとして渡せばいけたんだけどさ... &lt;p&gt;　うーむ、うーむ...なんで？　え？ もしかして、わかってないの、オレだけ？ &lt;img src ="http://blogs.wankuma.com/mrt/aggbug/93732.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>