2011年11月22日火曜日

ASP.NET:2つのドロップダウンの動的制御

【ドロップダウン連携】
たとえばふたつのドロップダウンで、ひとつめのドロップダウンをロード時に値を入れ、値が選択された後にふたつめの値を動的に制御する場合、Load, PreRenderでドロップダウン1のvalueを決めて、PreRenderCompleteイベントででドロップダウン2の値を入れるやり方がある。

※多分です。

ASP.NET:動的にコントロールを生成するときの注意

【LoadControlメソッドなどで動的にコントロールを生成するケース】

表示しかしないないコントロールはPreRenderイベントで生成OKだが、ボタン押下などのイベントを扱うコントロール:PreRenderイベントで生成したのでは正常に動作せず、Loadイベント終了時までに生成されている必要がある。

ASP.NET:イベント発生順序

ASP.NETはイベント発生順序に結構気を使う。
基本は以下のとおり。

<APS.NETページロード>
1) Init
2) Load
3) PreRender
4) Unload

<ボタンクリック時>
1) Load
2) Button_Click
3) PreRender

2011年11月20日日曜日

ASP.NET メモ

ASP.NETメモ

・HTMLフォームコントロール
runat="server"を指定

・フォームデータ遷移が、ページ⇔ページではなく
同一ページでデータの読み込み・受け渡しをする。
(postback)

・複数のHTMLコントロールは指定できず、遷移先は全て自身のアドレスを指定

・サーバコントロールは自動管理
自分にポストした情報(何を選択しているか、など)が保管される

・Buttonコントロールで、はじめてPostBackが発生
(やり方によるけど、基本は)

・(bool) IsPostBack関数で、ポストバックか非ポストバックを判断する
※非ポストバックは、いわゆるはじめてページに飛んできたとき
PageInit→状態復元→PageLoad(ここで初期化)
(この状態復元の段階で、リスト値はPageLoadを実行せずとも復元されている)

・コードビハインドは?
vbとasp.netページをわけること。
vbクラスの中に public class CLASSNAME [inherits] System.Web.UI.Pageで指定

【vbコード】
<%@ PAGE LANGUAGE="C#" Inherits="HogeHoge" Src="sample02.aspx.cs" %>
<html>
<body>
<form runat="server">
<asp:TextBox id="textEMail" runat="server"></asp:TextBox>
</form>
</body>
</html>
【ASP.NETページ】
public class HogeHoge : System.Web.UI.Page {
  protected System.Web.UI.WebControls.TextBox textEMail;

  private void Page_Load(object sender, System.EventArgs e) {
    textEMail.Text = "あいうえお";
  }
}

といったよう。

・データバインドとは?

データ「連結」のこと。
→ページデザインからコードにアクセスするための仕組み
書式が<%#  <バインド式>  %>
※この両部分のカッコをデリミタという。

Eval or Bind (コントロールのDataBind()またはPageクラスが呼ばれたときに解決される。
Eval = ReadOnly, Bind = RW ok みたいなもの。

DataBindメソッドを発行するだけで、DataGridコントロールが内部でループ処理をしてくれます。

★ちなみにこれに関数を入れることもできます。

Public Function getHeaader() As String
End Function
<HeaderTemplate>社員ID,アンケート実施日時,<%#getHeaader()%>
↑ヘッダテンプレート内に記述
ただしfunctionじゃないとだめとおもう(値を返す)

<%# FormatForXML(DataBinder.Eval(Container.DataItem, "Title")) %>
※FormatForXMLはstring引数1のオリジナル関数

【デバッグ】
System.Diagnostics.Debug.Write()
System.Diagnostics.Debug.WriteLine()

2011年11月15日火曜日

DSOFramerの再インストール

dsoFramer.ocxの再インストール
以下をコマンドプロンプトで叩く。

インストール:
regsvr32 C:\dsoframer.ocx
アンインストール:
regsvr32 C:\dsoframer.ocx /u

要はレジスタとアンレジスタなんですが、ocxはファイルを削除してもレジストリに登録されているものは削除されないので、ファイル削除ではなくアンレジスタするようです。

WebGrabberのエラー

HTMLをPDFにするwebGrabberについてちょっと調べる機会がありました。

2009はwindows server向けぽいです。
スタンドアロンでも動きますし、vbスクリプトからも動くと。

で、サポートツールから使うため、IEエンジンで動かすための調査。
インストールしたら、IEEngineを使うのはまずWebGrabber IE Login Infomationを立ち上げて、
「ドメイン、このコンピュータのユーザ名、このコンピュータのパスワード」で登録。
さらにwindows\system32内にある
APWebGrb.ocx(多分これが一番重要)
APWebGrbNET.dll
APWebGrb.exe
にフルコントロール権限を付けます。
そしたら鬼のように出ていたWPRHandler.exeのハンドラのエラーが出なくなって正常になりました。

結局使わなかったけど。。。

2011年11月14日月曜日

Smarty Warning: Smarty error: unable to read resource エラー

なぜか時々出るSmartyのこのエラー

Warning: Smarty error: unable to read resource: "test.tpl" in C:\Apache2\php_libs\smarty\libs\Smarty.class.php on line xxxx

テンプレートを絶対パスで指定したら直った。

decimal型

DBワンポイント::decimal型

value DECIMAL(5,2)
この例で、5 (precision) は、値に対して格納される 10 進数の桁数を表わし、2 (scale) は、小数点に続いて格納される桁数を表わします。
したがって、この場合、value カラムに格納できる値の範囲は、-99.99 ~ 99.99 になります(MySQL では、正数の符号を格納する必要がないため、
このカラムには、実際には、999.99 までの数値を格納することができます)。

とのこと。
出てくる度に確認してる気がするorz

x80020101のため操作を完了できませんでした

IE6,IE7では,Ajaxで読み込まれるページのJavaScriptが
   <script type="text/javascript">
   <!--
       ~~
   //-->;
   </script>
のようにコメントアウトされていると,
「x80020101のため操作を完了できませんでした」のエラーが表示される。

ASP.NET 本日から翌月末の日付を求める方法

「本日から翌月末の日付」
Dim c As Date = New Date(Now.Year, Now.Month + 2, 1)
c.AddDays(-1)

Wacom ペンタブレット:差し直したときにうまくカーソルが動かない

Bamboo買ってからずっとこの現象に悩まされています。

私自身、ペンタブレットは頻繁に使うものではなく、時々遊びに使う程度なので、常時USB口を埋めるのもなんなので使うときにだけ差しています。
しかし差す度に、タッチは反応するのに、カーソルがうまく動かない。
プルプルするだけ。カシャカシャ動かしてもプルプルするだけ。
震えるペン先・・・
なんかかっこいいけどかっこ悪い。

で、そのたびにドライバを再インストールしてたんですが、馬鹿馬鹿しくなってもっとお手軽な対処法はないのかと探したら、以下の方法で解決できました。

スタートメニューから全てのプログラム→Bamboo→Bamboo設定ファイルユーティリティ
→ログインユーザの設定ファイルを削除

差すたびにこれをやらなければならないのも面倒なんですが。
ドライバ再インストールよりマシかと自分を納得させています。

2011年11月9日水曜日

SQL:まとめて置換

UPDATE theTable SET theField = REPLACE(theField, ' ', '')

SQL:NULL値を指定した値で置き換え表示

select ISNull(column, "this is NULL") from Table...

で、NULLを代替文字列で置き換え表示できる。

便利です。

SQL:CaseWhenの使い方

SQLのCase Whenについて
※いわゆるif文のようなもの

select (列名 as 列名) 
CASE
when 条件 then 返値
when 条件 then 返値(省略可)
else 返値(省略可)
END

便利です。

2011年11月8日火曜日

HTMLが真っ白になる

HTMLをブラウザで開いたときに真っ白になる現象。

metaタグのcharset=utf-8宣言と<title>タグの順番が前後していたせいでIEがちゃんとUTF-8と認識してくれなかった。

 正しい順番は
 <meta...>
 の次に
 <title>○○</title>

ただ、<title>タグに挟む文字によっては、やはり同じ現象が起こるらしい。
 「定」とか。なぜだろう?

 予防策として、保存時の文字コードとキャラクタセットをちゃんと統一すること。

 参考URL
 http://www.tagindex.com/kakolog/q2bbs/1601/1844.html


タグに挟む文字によっては、やはり同じ現象が起こるらしい。<br /> 「定」とか。なぜだろう?<br /> <br /> 予防策として、保存時の文字コードとキャラクタセットをちゃんと統一すること。<br /> <br /> 参考URL<br /> http://www.tagindex.com/kakolog/q2bbs/1601/1844.html

zip生成時、ツールによっては解凍できないzipが出来る

APIかなんかでzipを生成したとき、ツールによって解凍できないzipができてしまう

生成したいパスが、実行フォルダ/folder/配下だった場合、出力先を

addzip->"/folder/xxx.txt" ×ぶっぶー
addzip->"folder/xxx.txt" としなきゃいけない。

敗因はこの「/」ルートのスラッシュ。
だからツールによっては無理矢理c:\で解凍しようとしておかしなことになっていたようです。
わかってしまえばなんてことないのだが、注意しないとダメですね。

Flex:データグリッドでオンマウスしても選択状態にならない

Flexのデータグリッドで、マウスをオンしても色が反転してくれないという謎の現象に悩む。
どうやらuidというカラムを含んだテーブルから取得したデータで、uidにNULLがあるとそういう状態になるらしい。
でもオンクリック時にはちゃんと値が取れる。
データをinsertするときNULLを避けなきゃなぁとうなだれていたのだが真相を知ってびっくり。

カラム名を『uid』としてしまった場合、それが『ユニークキー』じゃないと、配列をarraycollectionにいれてDataGrid(リスト系UI?)に放り込んだ際に、マウスのカーソル通り背景が反転しない現象が出現するのだった。
こんなんわかんないッスよorz

発見したとき思わず両手を合わせて拝んだブログ
http://www.coltware.com/category/flex/flex_ui/

2011年11月7日月曜日

メールが送信されない

Return_pathを指定したら届いた。

CustomContorolで検証が呼び出されない

CustomControlの罠

CustomControlで入力が空の場合、Falseとするような検証作ってたつもりだったのにFalseにはならず悩んでいたら、仕様でした。

『入力コントロールが空の場合、検証関数は呼び出されず、そのまま検証が成功します。ユーザーが入力コントロールへの入力を省略しないようにする場合は、RequiredFieldValidator コントロールを使用します。』

そうですか。。。

2011年11月6日日曜日

VB.NET 省略可能な引数を持つ関数

Private Sub OptionalFunction _
(ByVal Name As String, Optional ByVal Value As String = "Default")
  Console.WriteLine("hogehoge", Name, Value)
End Sub
・Optionalキーワードを指定する場合、初期値を設定する必要がある。
・引数省略時には、初期値に設定した値が使用される。

window onloadの書き方

javascript window onloadでハマった。

window.onload = hogehogeFunction(); //これだとNG
window.onload = hogehogeFunction; //これだとOK?

こちらはOK(無名関数を使う。こちらのが正統ぽい)
window.onload = function(){
  hogehogeFunction();
}

今更聞けないjavascript idとnameの違い

id:重複不可
name:重複可能
getElementById:単数
getElementsByName:複数(カンマ区切りの配列になる)

2011年11月5日土曜日

ページの有効期限切れ対策

Windows ServerにてPHPのページの有効期限切れをなくす

c:\windows php.iniの中の
; session.cache_limiter = nocache
session.cache_limiter = none

とする。

2011年11月4日金曜日

ファイルアップロードが出来ない

<form name="form_name" id="form_name" method="" action="" enctype="multipart/form-data">

enctypeの記述がなかったorz

2011年11月3日木曜日

ImageMagick サーバ設定

画像が変換されない、変換されても画質が悪い、エラーが出る、など、ImageMagickのトラブル時にこの設定をサーバにすることで改善されることがあります。
なお、ここではサーバはWindows Server 2003を前提としますが、2008でもほとんど差はありません。

【注意】
サーバのセキュリティを緩めるような設定になりますので、自己責任で実行してください。

・IISの匿名認証の権限変更
PHPのimagick->thumbnailimage()などでEPS→JPEG変換(ベクターからラスターへの変換)を行う際、デフォルトでPHPに与えられている権限ではGhostscriptを正常に動かすことができず、画質が非常に悪くなってしまうため、下記の設定を行いPHPからGhostscriptへのアクセスを許可する。

1. IIS->default web site->匿名認証 をAdministrator権限に変更
2. Administratorのパスワードを入力

・ローカルセキュリティポリシーの割り当て
PHPからexec(convert……)という形でサーバ上のファイルを直接コマンドラインから操作する方法は、PHPでアップロードしたファイルに対しては無効。これはファイルの所有権に関係しているため、IISを介し生成したファイルに適切な所有権を与える必要がある。

管理ツール->ローカルセキュリティポリシー->ユーザー権利の割り当て->
ファイルとその他のオブジェクトの所有権の取得にIIS_WPGとIUSR_R3007を追加。
※Windows Server 2008の場合はIUSRとIIS_IUSRを追加。