2008年3月25日火曜日

ExtJs-10 DBとグリッド

ビューをEXTにするってことで
ExtとのデータIFはすべてJSONにすることにしたわけで、(WTToolkitも踏まえて)
今日はDataGridへのでーたの展開を。

でもうまくいかなかった。。。

GridPanelに設定するのは
・データストア
 →データリーダ
   →レコード
・カラムモデル
でよいのだろう。

データストアストアは
        var store = new Ext.data.Store({            fields: [               {name: 'ID'},               {name: 'XXXX1',type: 'string'},               {name: 'XXXX2',type: 'string'},               {name: 'EEEE1',type: 'string'},               {name: 'EEEE2',type: 'string'}            ],            http://www.blogger.com/,            reader: jsonreader        });

でよいのかな。
データリーダはJOSNだから
        //--- JSONリーダ ---        var jsonreader = new Ext.data.JsonReader(        {            totalProperty: "results",    // The property which contains the total dataset size (optional)            root: "rows",                // The property which contains an Array of row objects            id: "id"                     // The property within each row object that provides an ID for the record (optional)        }, employeeRec);

でよいのだろうか。
トータルの設定とかルートの設定とかはAPIのサンプルをそのまま。
で、レコード定義。
        //--- レコード定義 ---        var employeeRec = Ext.data.Record.create(        [           {name: 'ID'},           {name: 'XXXX1'},           {name: 'XXXX2'},           {name: 'EEEE1'},           {name: 'EEEE2'}        ]);


もちろん
sampleReadGridData.aspx
が返却する情報はデータセットをforeachでぶん回して上記のresult、rowsで指定した形でJSONを
整形(APIで書いてあった形式のデータ構造を。。)。
でもうまくいかないなぁ。

今日はここまで。

2008年3月23日日曜日

花粉症

また来た。
毎年、このじきになると製薬会社はいいなー。ておもう。実際どーなんだろう。

2008年3月19日水曜日

しかし

ブログへのソースコード展開がぐちゃぐちゃで何とかしたい。

ExtJs-9 DBとメニューとその2

今日は指針だけ。
この時間からの作業は明日に響きます。5時半起床だし。
8で書いてたつりーからタブをこうちくするってのは
APIリファレンスそのものだ。

よき勉強のため、APIリファレンス少し分解して
理解してから組みなおそう。

これができたらあとは
コントロールからのデータ取得(JSONになるんだろうなぁ)と
ASPX側への受け渡し。
DBへの書き込みと部分の実装の順番。

Ext側の小細工は仕組みの骨組みができた後に少しづつ
コントロールの勉強をしよう。

そしたらあとはフォーム系のコントロールをならしてみよう。
先が長いですね。

2008年3月18日火曜日

本を。

昨日簿記の本を買って簿記デビューだぁ。
なんて予定は未定で気が付けばITILの入門書を。ISO90012700120000なんでもPDCAだ。
なんだか世の中全てそのサイクルな気分。
もうPDCA中毒。

ぱっとおもいついて
できそうだからとかじりつき
ちょっとむずかしいと
あきらめる。

そんなサイクル。
にはしたくない。

2008年3月17日月曜日

さて、バスまち。と本。

会社からの帰りに読む雑誌がなくなった。
朝、新聞と週刊誌。
兄に借りた本を持ち歩けばよかったと後悔。
会社の先輩になにかないかと催促。
チームハックという本を借りた。

帰りの電車で三分の二読んだ。
おもしろい。

会社帰りに読むのは絵と文字数のバランス
が重要。

疲労した頭でぎっちりした文字を速読すると熱くなってしまうから。

先日脳学者の茂木さん?が読書について新聞に書いていた。
自分の分野以外の本を。と。
あとソニーの有機ELの宣伝で
脳は補完すると。

プロフェッショナルにももぎさん。
よく会う。

分類してみた。最近だと
ASP.NET本。2003の2〜4と、2005をローテーション。この人の書き方はさくさくしててスキだ。

自己啓発系。
時間の使い方云々と兄が貸してくれた本。
父に借りた判断速度の研究なんつー本も。

時代小説。ふじさわしゅうへい読破だとさわいでたけど停滞気味。

新分野。
今度は経理ダ。簿記だ。入門だ。
サンキューからやろう。
明日買おう。

バスまってると暗くて本よめないし。
困る。
あ、来た。

ExtJs-8 DBとメニューと

さて、チョコチョコとサンプルを触ってきて


本実装を開始しようかと思っています。。


何を作ろうか。というか、決まってる。


自分用のデスクトップツールを作ろう。





じゃ、メニューを作ろう。


ExtはloderでdataURL指定できるので


UIはすべてExtでやろうと決めた。





メニュー用のツリーを作ろう。


設定可能にするため、ツリー構造もDBに定義してみよう。


























とりあえずこんなんでよいだろう。






あとは最上位情報から取得と
末尾を検索する再帰関数を作ってノードを作ればOK。





いっこはまったのはJSONの値を整形する際の文法。
何を書いてやればOKなん?
っていうのがわからんチン。




とりあえず現状の解決としては、
子供要素はChild[]でくくれ。

ということでしょうか。



本日作ったサンプルコード張ってみる。










    /// <summary>    /// メニューツリーの構築    /// </summary>    /// <returns></returns>    private string createTrees()    {        string result = "";        string node = "";        string nodes = "";        string sqlStatement = "";        sqlStatement = "select * from TM_メニューデータ WHERE 上位メニューコード = '-' AND 末尾フラグ = 'false' ORDER BY 表示順, メニューコード";        DataTable dt = _sqlClientAccess.ReadDataTable(sqlStatement, "TM_メニューデータ");        foreach (DataRow dr in dt.Rows)        {            //--- JSONノード化 ---            node = createJsonMenuNode(dr, dt.Columns);            if (Convert.ToBoolean(dr["末尾フラグ"]) == true)            {                // NOP            }            else            {                node += ",children:[";                //--- 末尾情報検索再帰関数呼び出し ---                node += searchLeafData(dr["メニューコード"].ToString());                node += "]";            }            nodes += addNodeSeparator(node, "{", "},");        }        nodes = trimEndToken(nodes, ",");        nodes = addNodeSeparator(nodes, "[", "]");        result = nodes;        return result;    }    /// <summary>    /// メニューツリー構築用再帰関数    /// </summary>    /// <param name="parentCode"></param>    /// <returns></returns>    private string searchLeafData(string parentCode)    {        string result = "";        string nodes = "";        string node = "";        string sqlStatement = "";        sqlStatement = "select * from TM_メニューデータ WHERE 上位メニューコード = '" + parentCode + "'";        sqlStatement += " ORDER BY 表示順";        DataTable dt_children = _sqlClientAccess.ReadDataTable(sqlStatement, "TM_メニューデータ_CHILD");                foreach (DataRow dr in dt_children.Rows)        {            //--- JSONノード化 ---            node = createJsonMenuNode(dr, dt_children.Columns);            if (Convert.ToBoolean(dr["末尾フラグ"]) == true)            {                // NOP            }            else            {                node += ",children:[";                //--- 再帰呼び出し ---                node += searchLeafData(dr["メニューコード"].ToString());                node += "]";            }            nodes += addNodeSeparator(node, "{", "},");        }        nodes = trimEndToken(nodes, ",");        result = nodes;        return result;    }
private static string createJsonMenuNode(DataRow dr, DataColumnCollection dcCollenction) { string result = ""; //--- 初期化 --- string nodeinfo = ""; foreach (DataColumn dc in dcCollenction) { switch (dc.ToString()) { case "メニューコード": nodeinfo = nodeinfo + "id:" + "'menu_" + dr[dc] + "'" + ","; break; case "項目名": nodeinfo = nodeinfo + "text:" + "'" + dr[dc] + "'" + ","; break; case "末尾フラグ": nodeinfo = nodeinfo + "leaf:" + dr[dc] + ","; break; case "ドラッグ設定": nodeinfo = nodeinfo + "draggable:" + dr[dc] + ","; break; } } //--- 末尾カンマ排除 --- if (nodeinfo.EndsWith(",")) { nodeinfo = nodeinfo.Substring(0, nodeinfo.Length - 1); } //--- 終期化 --- result = nodeinfo; return result; }
private static string addNodeSeparator(string node, string start_token, string end_token) { node = node.Insert(0, start_token); node = node.Insert(node.Length, end_token); return node; }
private static string trimEndToken(string token, string trinToken) { //--- 末尾カンマ排除 --- if (token.EndsWith(trinToken)) { token = token.Substring(0, token.Length - 1); } return token; }

さて、このツリーからクリックされたら指定URIをタブを追加して

表示するというのはまた今度。

今日得たこと。

①ASP.NET側でのDBアクセスモジュール

②ExtからLoader指定でaspx指定し、DBデータを取得できていること。

①、②でDataSet→JSONはすでにあるし、

Gridのサンプルはあるのでこれで少しはさきにすすめるかな。

まずまずの進捗だね。

あ。もうひとつ。
せっかく作ったJSONデータ、aspxからResponse.Writeしてるのに
なんでひょうじされんのじゃ。
ってはまった。

Response.End()してないでやんの。
子一時間、右往左往してました。

はぁ。

2008年3月3日月曜日

ひさびさの更新

三月のだい一週目。
39度の熱を出して病院へ。
採血して、レントゲンとって。

すごーく大事になりました。
が、やっとかいふくでしょうか??

問題が。
転職して間もない=有給がない。
ということで休日出勤で進捗ともどもカバーする予定ですが、
この風邪、長い。

今日も出社予定でしたが、やめました。
ということで久々の勉強を。
文書のテンプレートの整理とEXTの学習。今日はツリーとDB系。