<?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>dev &gt;&gt; .NET &gt;&gt; ASP.NET</title><link>http://blogs.wankuma.com/pinzolo/category/708.aspx</link><description>dev &gt;&gt; .NET &gt;&gt; ASP.NET</description><managingEditor>THREE-ONE</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>THREE-ONE</dc:creator><title>デスクは広い方がいい</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/08/08/152381.aspx</link><pubDate>Fri, 08 Aug 2008 18:25:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/08/08/152381.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/152381.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/08/08/152381.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/152381.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/152381.aspx</trackback:ping><description>&lt;A href="http://blogs.wankuma.com/pinzolo/archive/2008/08/02/151482.aspx" target="_blank"&gt;こんなこと&lt;/a&gt;をいろいろやって、cssの勉強がてら頼まれてた Web アプリを作ってたんだがやめた。&lt;br/&gt;
なんつーか、ヘッダ・メニュー・フッタ全部&lt;span style="font-weight:bold"&gt;邪魔!!&lt;/span&gt;&lt;br/&gt;
メニューなんて&lt;a href="http://www.justsoftwaresolutions.co.uk/articles/sample_menu.html" target="_blank"&gt;こちらのサンプル&lt;/a&gt;のようなのがちょろっとだけあればいいし、コピーライトだけのフッタが常時見えている必要はない。&lt;br/&gt;
メニューは常時アクセスできるようにしておきたいけど、ヘッダはスクロールして隠れてもいいよ。&lt;br/&gt;
あたりまえだけど、結局一番大事なのはコンテンツなので、そのスペースはできる限り大きく取りたい。&lt;br/&gt;
ブラウザ最大化してようやく使い物になるような Web システムなんてクソだ。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/152381.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>Page にて特定のコントロールの ViewState を削除する</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/08/08/152308.aspx</link><pubDate>Fri, 08 Aug 2008 11:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/08/08/152308.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/152308.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/08/08/152308.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/152308.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/152308.aspx</trackback:ping><description>&lt;a href="http://bbs.wankuma.com/index.cgi?mode=al2&amp;namber=22936" target="_blank"&gt;viewstateについて&lt;/a&gt; にて回答したことに対する補足というかメモ。&lt;br/&gt;
&lt;br/&gt;
LoadPageStateFromPersistenceMedium は Pair オブジェクトを返す。&lt;br/&gt;
この Pair の First には ControlState が、Second には ViewState が格納されている。&lt;br/&gt;
そこから以下は最初だけちょっと違って、Pair と ArrayList が交互に格納されている。&lt;br/&gt;
おそらく画面の構造がそのまま反映されているんだろう。&lt;br/&gt;
で、この ArrayList への格納の仕方がちょっとひどい。&lt;br/&gt;
偶数番目にコントロールのインデックスが格納されており、+1した奇数番目に ViewState のデータが Pair オブジェクトとして格納されている。&lt;br/&gt;
そこは Dictionary か、それこそ Pair を要素にしておけばいいんじゃないの？って感じがする。&lt;br/&gt;
実際 ControlState の方は、キーがコントロールの ID で、値に ControlState を格納する Pair オブジェクトを持つ HybridDictionary になっている。&lt;br/&gt;
なので、目的のコントロールの ControlState は見つけやすい。&lt;br/&gt;
目的のコントロールの ViewState は本当に見つけにくく、ページの構成に大きく左右されるため、意味不明で保守しづらい危険なコードになる。&lt;br/&gt;
ちなみに、GridView が 2 つ、Button が 1 つ並んでいる aspx にて、二番目の GridView の ViewState を削除するためには下記のコードが必要だった。
&lt;textarea name="code" class="C#"&gt;
protected override object LoadPageStateFromPersistenceMedium()
{
    object obj = base.LoadPageStateFromPersistenceMedium();
    ArrayList list = (ArrayList)((Pair)((ArrayList)((Pair)((Pair)((Pair)obj).Second).Second).Second)[1]).Second;
    list[3] = null;
    return obj;
}
&lt;/textarea&gt;
こんなの絶対保守したくない&lt;br/&gt;
それ以前に、こんなトリッキーなことは普通やらないわな&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/152308.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>GridView に Flexigrid を適用する</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/07/31/151248.aspx</link><pubDate>Thu, 31 Jul 2008 10:37:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/07/31/151248.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/151248.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/07/31/151248.aspx#Feedback</comments><slash:comments>635</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/151248.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/151248.aspx</trackback:ping><description>&lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; のプラグインで &lt;a href="http://www.webplicity.net/flexigrid/" target="_blank"&gt;Flexigrid&lt;/a&gt; ってのがあります。&lt;br /&gt;
Rails 開発でちょくちょく使ってて便利なので、GridView に適用できないもんかなーと思ってやってみた。&lt;br /&gt;
まず、通常の GridView ではうまくいかない。&lt;br /&gt;
というのも、GridView は thead, tbody タグを生成しない。&lt;br /&gt;
これの解決策として &lt;a href="http://www.codeplex.com/cssfriendly" target="_blank"&gt;CSS Friendly Control Adapters&lt;/a&gt; を使用する、。&lt;br /&gt;
以前は VSI で配布されていたが、今はずいぶんとシンプルになっている模様。&lt;br /&gt;
まず、zip と dll をダウンロード&lt;br /&gt;
Web アプリケーションプロジェクトに zip 内の CSSFriendly/CSS と CSSFriendly/JavaScript を移植。（いらないかも）&lt;br /&gt;
参照設定にダウンロードした CSSFriendly.dll を追加。&lt;br /&gt;
App_Browsers ディレクトリを追加し、中に CSSFriendlyAdapters.browser を配置。&lt;br /&gt;
CSS Friendly Control Adapters の設定はこれで OK。&lt;br /&gt;
これで、thead, tbody が出力されるようになる。&lt;br /&gt;
&lt;br /&gt;
次に Flexigrid の設定。&lt;br /&gt;
Flexigrid は jQueryのプラグインなので、jquery.js をダウンロードして JavaScript フォルダに配置。（軽量版の jquery.pack.js をリネームした）&lt;br /&gt;
次に flexigrid.js を JavaScript フォルダに配置。&lt;br /&gt;
CSS ディレクトリに flexigrid.css および images ディレクトリを配置。&lt;br /&gt;
これで Flexigrid の設定も完了。&lt;br /&gt;
&lt;br /&gt;
これで $(#GridView1).flexigrid() でよいかといえばそうはいかない。&lt;br /&gt;
若干の追加処理が必要になる。&lt;br /&gt;
まず、CSS Friendly Control Adapters を使用した場合、コントロールの id は table ではなく、それを取り囲む div タグに設定される。&lt;br /&gt;
flexigrid メソッドは table のオブジェクトから呼び出す必要があるため $() の引数を #GridView1 table としてやる。&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;(追記：$(#GridView1).flexigrid() でもできました。正式に table から呼び出す方が無難とは思われますが。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
次にヘッダの width。&lt;br /&gt;
CSS Friendly Control Adapters を使用すると、各列の HeaderStyle の出力がされない。&lt;br /&gt;
ちなみに HeaderStyle の CssClass も設定されない。ヘッダなのに ItemStyle の CssClass の反映がなされる。&lt;br /&gt;
まあ、どっちにしても Flexigrid に必要なのは width 属性であり、style="width:100px" などしても反映されないのではあるが。&lt;br /&gt;
なので、下記のようにしてヘッダの各セルに width を設定してやる必要がある。&lt;br /&gt;
&lt;textarea name="code" class="C#"&gt;
protected void GridView1_PreRender(object sender, EventArgs e)
{
    GridView gv = (GridView)sender;
    for (int i = 0; i &lt; gv.Columns.Count; i++)
    {
        gv.HeaderRow.Cells[i].Attributes["width"] = gv.Columns[i].HeaderStyle.Width.ToString();
    }
}
&lt;/textarea&gt;
別に HeaderStyle から持ってこなくてもいいのだが、ヘッダの設定なので HeaderStyle に仕込んでおくのが筋だろうと思うので。&lt;br /&gt;
デザイナで設定できますしね。
これで $(#GridView1 table).flexigrid() で Flexigrid を適応できる。&lt;br /&gt;
Flexigrid には Ajax による非同期のページングやソートなども組み込まれているため、GridView に対するその部分のコーディングを簡略化できるかも。&lt;br /&gt;
XML か JSON を返す別の aspx なりが必要になりますが。&lt;br /&gt;
&lt;br /&gt;
もともと GridView の機能である、インプレース編集などがうまくマッチできるかどうかはまだ試してません。&lt;br /&gt;
ここがうまく統合できるならかなり強力だと思うんだけどなぁ・・・&lt;br /&gt;
ぼちぼち試してみる予定です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# まともな技術系エントリはかなり久々な気がする(;-_-)&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/151248.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>DataSource はなぜデザイナに貼り付ける？</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/03/21/128817.aspx</link><pubDate>Fri, 21 Mar 2008 00:11:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/03/21/128817.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/128817.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/03/21/128817.aspx#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/128817.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/128817.aspx</trackback:ping><description>DataSource 系のコントロールはなぜデザイナに貼り付けなければならないんだろう？&lt;br/&gt;
というかなぜコントロールなんだろう？&lt;br/&gt;
VS2003まであった、SqlCommand のようなコンポーネントで扱う方がよかったんじゃないだろうか？&lt;br/&gt;
画面に表示されないものをデザイナに貼り付けるってのは WYSIWYG を阻害するだけでしかないと思うんだけど。&lt;br/&gt;
そもそも、UI に直接作用するものではなくデータやビジネスロジックと UI の橋渡しをするものなんだし。&lt;br/&gt;
グレーの四角いのが画面に並んでるのはあまりいいもんじゃないなぁ～&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/128817.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>ChartFX for VisualStudio2005</title><link>http://blogs.wankuma.com/pinzolo/archive/2007/10/14/101942.aspx</link><pubDate>Sun, 14 Oct 2007 02:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2007/10/14/101942.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/101942.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2007/10/14/101942.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/101942.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/101942.aspx</trackback:ping><description>現在のプロジェクトで使っていくであろうChartFX for VisualStudio2005のトライアル版をインストール&lt;br/&gt;
&lt;br/&gt;
とりあえずしばらくはサンプルと英語のドキュメントをにらめっこしていくことになりそうです。&lt;br/&gt;
棒グラフとかを表示させるにしても、デザイナでは折れ線なのか・・・&lt;br/&gt;
ていうかプロパティ設定で全然かわらない？？&lt;br/&gt;
設定とデータよりpngを生成して出力するようなので、デザイナではしかたないのかなぁ？&lt;br/&gt;
サンプルちょっと動かしただけなのでこれからです&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/101942.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>ASPX でのコメントアウト</title><link>http://blogs.wankuma.com/pinzolo/archive/2007/04/08/70569.aspx</link><pubDate>Sun, 08 Apr 2007 12:12:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2007/04/08/70569.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/70569.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2007/04/08/70569.aspx#Feedback</comments><slash:comments>158</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/70569.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/70569.aspx</trackback:ping><description>C# に限らず、ソースファイルでは修正時に過去のソースをコメントアウトとして残し、コメントで情報を添えることで変更履歴を残す風習はいたるところで見られます。&lt;br/&gt;
バージョン管理システムが普及している今、そういう考え方はよしとされない傾向もあります。&lt;br/&gt;
&lt;br/&gt;
では、ASPX のようなデザインとロジックが一体化したファイルの場合、不必要になった・変更になったコントロールはどうしますか？&lt;br/&gt;
ほとんどの場合、すっぱり削除するのが多いと思います。私もそうします。&lt;br/&gt;
しかし、中には以下のようなことをやるのも見たことがあります。&lt;br/&gt;
&lt;br/&gt;
・&amp;lt;%-- &amp;lt;asp:Label id=&amp;quot;lbl&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;hoge&amp;lt;/asp:Label&amp;gt; --%&amp;gt;&lt;br/&gt;
　正しいコメントアウトだと思います。&lt;br/&gt;
　ですが、クライアントに空白や空行として送信されてしまうのが、個人的には好きじゃありません。&lt;br/&gt;
&lt;br/&gt;
・Visible を false&lt;br/&gt;
　クライアントの HTML には反映されませんが、インスタンスは作られるしコントロールに対する処理も実行されるのでムダですね。&lt;br/&gt;
&lt;br/&gt;
・&amp;lt;!-- &amp;lt;asp:Label id=&amp;quot;lbl&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;hoge&amp;lt;/asp:Label&amp;gt; --&amp;gt;&lt;br/&gt;
　なんか勘違いしてますね、これ書いた人は勉強しなおしたほうがいいと思います。&lt;br/&gt;
　インスタンスは作られて、コントロールに対する処理も実行される上でなく、クライアントの HTML にも埋め込まれます。&lt;br/&gt;
　ブラウザが見えなくしてるだけです。&lt;br/&gt;
&lt;br/&gt;
で、先日現場で上記のどれでもないコメントアウトを見つけました。&lt;br/&gt;
&lt;br/&gt;
それが・・・・・コレだ&lt;br/&gt;
&lt;br/&gt;
&lt;span style="color:red;font-weight:bold;"&gt;One, Two, Three&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="rem"&gt;/* &amp;lt;asp:Label id="lbl" runat="server"&amp;gt;hoge&amp;lt;/asp:Label&amp;gt; */&lt;/span&gt;&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
この発想はなかったので、はじめは何してるかわからなかった（コメントアウトとは思わなかった）&lt;br/&gt;
まあ、結果は確かに期待したとおりのものになりますが、なんか違うよね。&lt;br/&gt;
アクセス時に作成される cs (または vb）ファイルに /* &amp;lt;asp:Label id=&amp;quot;lbl&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;hoge&amp;lt;/asp:Label&amp;gt; */ つーコメントを埋め込めと命令しているわけで。&lt;br/&gt;
まあ、実害はないので放置しておきました。&lt;br/&gt;
&lt;br/&gt;
あ、でもね&lt;br/&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;&amp;lt;!-- 1999/01/23 Mr.X また猿に負けたため削除 begin --&amp;gt;&lt;/span&gt;
&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="rem"&gt;/* &amp;lt;asp:Label id="lbl" runat="server"&amp;gt;hoge&amp;lt;/asp:Label&amp;gt; */&lt;/span&gt;&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;&amp;lt;!-- 1999/01/23 Mr.X また猿に負けたため削除 end --&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
台無しですから（日付・名前・コメントはもちろん適当ですよ）&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/70569.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>上から順でお願いします</title><link>http://blogs.wankuma.com/pinzolo/archive/2007/04/04/70182.aspx</link><pubDate>Wed, 04 Apr 2007 21:26:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2007/04/04/70182.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/70182.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2007/04/04/70182.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/70182.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/70182.aspx</trackback:ping><description>Webアプリの保守や改修をしていると、aspx のソースからデザインや各コントロールをイメージして、テキストエディタでいじることをよくやります。（私は）&lt;br/&gt;
ですが、ここでどうしようもないこまったちゃんが出てきます。&lt;br/&gt;
そ～ぅ、&lt;span style="font-size:xx-large;color:blue;"&gt;GridLayout&lt;/span&gt;で・す・YO!!。&lt;br/&gt;
DataGrid が縦に 4 つ並んでたのですが、HTML 上では実際の 3 → 2 → 4 → 1 の順に並んでました。&lt;br/&gt;
ﾅﾒﾝﾅﾜﾘｬｧ(ﾉ-_-)ﾉ⌒┻┻&lt;br/&gt;
&lt;br/&gt;
まあ、厳密には GridLayout というか絶対位置指定の問題なんですけど。&lt;br/&gt;
GridLayout に頼っていると、HTML が見づらいものになってしまうという点で同じかな。&lt;br/&gt;
絶対位置指定も z-index を利用して、三次元ぽい配置するには便利なんですよ。&lt;br/&gt;
FlowLayout そんなにめんどくさいかなぁ？&lt;br/&gt;
個人的には、GridLayout をデフォルトにした MS のせいだと思ってます。&lt;br/&gt;
&lt;br/&gt;
VS2003 までは、デザイナでちまちまやるより、直接 HTML やコントロールをタグでがーーーーーーっと書いていくほうが、効率いいと思うんだけどなぁ。&lt;br/&gt;
インテリセンスもきくんだし。&lt;br/&gt;
もちろん、ある程度なれた人限定ですけど。&lt;br/&gt;
あ、なれてなくても必ず FlowLayout でやってください。ﾏｼﾞﾃﾞ&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/70182.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>Name と NCName と QName</title><link>http://blogs.wankuma.com/pinzolo/archive/2007/03/15/66833.aspx</link><pubDate>Thu, 15 Mar 2007 01:35:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2007/03/15/66833.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/66833.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2007/03/15/66833.aspx#Feedback</comments><slash:comments>136</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/66833.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/66833.aspx</trackback:ping><description>昨日の XML Schema のデータ型に Name と NCName と QName という似たようなデータ型があります。&lt;br/&gt;
これはいったいなんでしょう？&lt;br/&gt;
まず、QName とは属性名や要素名の形式です。&lt;br/&gt;
xsl:stylesheet のように名前空間接頭辞:localName の形式です。&lt;br/&gt;
これに対して展開された名前というものが存在します。&lt;br/&gt;
これは "http://www.w3.org/1999/XSL/Transform"+"stylesheet" のように名前空間を URI に展開します。&lt;br/&gt;
つまり、同じ名前空間に属する同じ localName の要素でも QName は違う可能性がありますが、展開された名前は必ず一致します。&lt;br/&gt;
この、名前空間接頭辞:localName の形式を QName といいます。&lt;br/&gt;
データ型としてわかりやすいのは、xsd:element 要素の name 属性とかでしょうか。&lt;br/&gt;
&lt;br/&gt;
たいして、Name と NCName は要素内容や属性値に使用できる文字の集合を表しています。&lt;br/&gt;
要素名や属性名に使用できる文字で構成された文字列データということです。&lt;br/&gt;
そのため、xsd:string から派生したものになっています。&lt;br/&gt;
NCName とは Name で使用される文字から : を取り除いたものです。&lt;br/&gt;
XML において名前に : は含むことができます。&lt;br/&gt;
ただし、名前空間とのデリミタとしても使用されるため、推奨されていません。（パーサーによってはエラーにもなりますね）&lt;br/&gt;
要するに&lt;span style="font-size:x-large"&gt;まぎらわしい&lt;/span&gt;んですよ。&lt;br/&gt;
&lt;br/&gt;
ID データ型は NCName から派生しています。&lt;br/&gt;
つまり、ID データ型に指定された属性値には : を含むことができないのです。&lt;br/&gt;
そういえば、ASP.NET で id 属性にレンダリングされる Control.ClientID は Control.UniqueID の : を _ に置換したものですね。&lt;br/&gt;
(ASP.NET 2.0 以降なら $ か。まあ $ は ID 型や NCName 型以前に Name 型として不適なので同じですけど)&lt;br/&gt;
それもちゃんと理由があるわけですね。&lt;br/&gt;
ま、これは XML Schema の ID 型というか DTD の ID 型なんですけれども。&lt;br/&gt;
XML Schema の ID 型も DTD の ID 型に対応させるためにあるわけなので、結局は同じ話です。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/66833.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>シェルピンスキーのギャスケット</title><link>http://blogs.wankuma.com/pinzolo/archive/2007/02/23/63707.aspx</link><pubDate>Fri, 23 Feb 2007 02:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2007/02/23/63707.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/63707.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2007/02/23/63707.aspx#Feedback</comments><slash:comments>41</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/63707.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/63707.aspx</trackback:ping><description>今日はマス北野の日です。&lt;br/&gt;
というわけで、数回前のネタであるフラクタルで遊んでみましょう。&lt;br/&gt;
&lt;br/&gt;
コードビハインド
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Configuration;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.Security;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls.WebParts;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.HtmlControls;

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; FractaleTest_FractaleTest : System.Web.UI.Page
{
    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
    {
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.rowRepeater.DataSource = &lt;span class="kwrd"&gt;this&lt;/span&gt;.CreateDataSource(64);
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.rowRepeater.DataBind();
    }

    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// データソースを作成します。&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;param name="lineCount"&amp;gt;表示行数&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;データソース&amp;lt;/returns&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;private&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;&amp;gt; CreateDataSource(&lt;span class="kwrd"&gt;int&lt;/span&gt; lineCount)
    {
        List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;&amp;gt; dataSource = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;List&amp;lt;&lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;&amp;gt;(lineCount);
        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; lineCount; i++)
        {
            &lt;span class="kwrd"&gt;int&lt;/span&gt; dataCount = i + 1;
            List&amp;lt;&lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt; line = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;(dataCount);
            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; dataCount; j++)
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; ((j == 0) || (j == dataCount - 1))
                {
                    line.Add(&lt;span class="kwrd"&gt;true&lt;/span&gt;);
                }
                &lt;span class="kwrd"&gt;else&lt;/span&gt;
                {
                    List&amp;lt;&lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt; previousLine = dataSource[dataSource.Count - 1];
                    line.Add(previousLine[j - 1] ^ previousLine[j]);
                }
            }
            dataSource.Add(line);
        }

        &lt;span class="kwrd"&gt;return&lt;/span&gt; dataSource;
    }
}
&lt;/pre&gt;
&lt;br/&gt;
&lt;br/&gt;
aspx
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="FractaleTest.aspx.cs" Inherits="FractaleTest_FractaleTest" %&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;シェルピンスキーのギャスケット&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt; &lt;span class="attr"&gt;cellpadding&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;cellspacing&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;border&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="rowRepeater"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="text-align:center; font-family:Monospace"&lt;/span&gt; &lt;span class="attr"&gt;nowrap&lt;/span&gt;&lt;span class="kwrd"&gt;="nowrap"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="circleRepeater"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;DataSource&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# Container.DataItem %&amp;gt;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                                    &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;# ((&lt;span class="kwrd"&gt;bool&lt;/span&gt;) Container.DataItem) ? &lt;span class="str"&gt;"○"&lt;/span&gt; : &lt;span class="str"&gt;"●"&lt;/span&gt; &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;
                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;a href="http://pinzolo.wankuma.com/img/Fractale.jpg" target="_blank"&gt;結果&lt;/a&gt;（ちょっとサイズでかいです）&lt;br/&gt;
&lt;br/&gt;
フラクタルだけに再帰でやりたかったけど、わかりにくいソースになりそうでやめた。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/63707.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>続、Excel でダウンロード</title><link>http://blogs.wankuma.com/pinzolo/archive/2007/02/04/60855.aspx</link><pubDate>Sun, 04 Feb 2007 17:26:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2007/02/04/60855.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/60855.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2007/02/04/60855.aspx#Feedback</comments><slash:comments>88</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/60855.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/60855.aspx</trackback:ping><description>&lt;A href="http://blogs.wankuma.com/pinzolo/archive/2006/11/24/46804.aspx" target=_blank&gt;http://blogs.wankuma.com/pinzolo/archive/2006/11/24/46804.aspx&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;これの DataGrid を GridView に変更して実行するとエラーになります。&lt;BR&gt;原因は、GridView が VerifyRenderingInServerForm を呼び出していて、Form のレンダリング中に GridView のレンダリングが行われていないためです。&lt;BR&gt;で、これを回避するためには VerifyRenderingInServerForm をオーバーライドしろとなっています。&lt;BR&gt;で、いくつかの掲示板は blog では Page::VerifyRenderignInServerForm を中身空でオーバーライドしているコードが見受けられます。&lt;BR&gt;これは非常に危険です。&lt;BR&gt;VerifyRenderingInServerForm はメソッド名どおり、コントロールが HtmlForm 内に配置されレンダリングされていることを確かめます。&lt;BR&gt;つまり、これを空でオーバーライドすると全てのコントロールが HtmlForm 外に配置されていても例外が出力されないということになります。&lt;BR&gt;ダウンロードという一機能のために画面全体の ASP.NET のアーキテクチャに影響する変更をしてはなりません。&lt;BR&gt;VerifyRenderingInServerForm を呼び出しているのは GridView だけではないのです。&lt;br/&gt;せめて下記のようにするべきでしょう。 &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;bool&lt;/SPAN&gt; _isDownloading = &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;override&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; VerifyRenderingInServerForm(Control control)
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (!_isDownloading)
    {
        &lt;SPAN class=kwrd&gt;base&lt;/SPAN&gt;.VerifyRenderingInServerForm(control);
    }
}
&lt;SPAN class=kwrd&gt;protected&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; downloadButton_Click(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, EventArgs e)
{
    &lt;SPAN class=kwrd&gt;base&lt;/SPAN&gt;.Response.ContentType = &lt;SPAN class=str&gt;"application/vnd.ms-excel"&lt;/SPAN&gt;;
    &lt;SPAN class=kwrd&gt;base&lt;/SPAN&gt;.Response.AppendHeader(&lt;SPAN class=str&gt;"content-disposition"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"attachment;filename=hoge.xls"&lt;/SPAN&gt;);
    &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (HtmlTextWriter writer = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; HtmlTextWriter(&lt;SPAN class=kwrd&gt;base&lt;/SPAN&gt;.Response.Output))
    {
        &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
        {
            _isDownloading = &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
            &lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.GridView1.RenderControl(writer);
            writer.Flush();
            &lt;SPAN class=kwrd&gt;base&lt;/SPAN&gt;.Response.End();
        }
        &lt;SPAN class=kwrd&gt;finally&lt;/SPAN&gt;
        {
            writer.Close();
        }
    }
}
&lt;/PRE&gt;&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/60855.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>