ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   Flex Builder 2.0
     DataGrid内のフォーマット変更について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
kusu
投稿日時: 2006-10-13 11:35
お馴染みさん
登録日: 2006-7-6
居住地: 愛知県
投稿: 11
DataGrid内のフォーマット変更について
お世話になります。kusuです。

RemoteObjectで取得したJavaのDate型の日付をDataGridにバインドして表示させようとしています。
この際、『Sun Oct 1 00:00:00 GMT+0900 2006』と表示されてしまうので、『2006/10/01』のように日付形式を変換して表示させたいのですが、方法がわかりません。
Java側でString型に変換してバインドする方法もあるのですが、
できればFlex側(mxml As)で変換したいと思っております。

どなたか方法をご存知の方いましたら、ご教授をお願いいたします。
n-kawai
投稿日時: 2006-10-13 13:33
ご主人様
登録日: 2006-1-16
居住地:
投稿: 208
Re: DataGrid内のフォーマット変更について
# すいません、コード例ではありませんが
たぶんDataGrid内の表示には、ObjectのtoString()で得られる
文字列が表示されていると思うので、Data型を継承し、
toString()で目的のフォーマットの文字列を返すクラスを
作ればよいような気がします。
# DateFormatterを指定するだけでも良い?

また、編集内容をDate型で受けたいのであれば、itemEditorを
使用して、getメソッド時にDate型を返すようにすれば良いかと
思います。
eneco
投稿日時: 2006-10-13 16:56
ご主人様
登録日: 2006-2-16
居住地:
投稿: 135
Re: DataGrid内のフォーマット変更について
こんにちは。

labelFunction と DateFormatter でどうでしょうか?
サンプルコードです。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.dataGridClasses.*;
[Bindable]
private var ac:ArrayCollection;
private function initApp():void {
var ary:Array = new Array();
for( var i:int=0; i<3; i++ ) {
var obj:Object = new Object();
obj.no = i+1;
obj.date = new Date(2006,9,i+1);
obj.label="a"+(i+1);
ary.push(obj);
}
ac = new ArrayCollection(ary);
}
private function myLabel(item:Object, column:DataGridColumn):String {
var str:String = dtfm.format(item[column.dataField]);
return str;
}
]]>
</mx:Script>

<mx:DateFormatter id="dtfm" formatString="YYYY/MM/DD"/>
<mx:DataGrid dataProvider="{ac}">
<mx:columns>
<mx:DataGridColumn dataField="no"/>
<mx:DataGridColumn dataField="date" labelFunction="myLabel"/>
<mx:DataGridColumn dataField="label"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>

では。

eneco
kusu
投稿日時: 2006-10-16 9:06
お馴染みさん
登録日: 2006-7-6
居住地: 愛知県
投稿: 11
Re: DataGrid内のフォーマット変更について
n-kawaiさん enecoさん
ありがとうございました。(お礼が遅くなってすいません。)

日付形式の変更できました。
labelFunctionを利用する方法の実装方法を知らなかったので
非常に参考になりました。

また、お願いします!!




choice777
投稿日時: 2008-7-18 18:33
お馴染みさん
登録日: 2008-7-11
居住地:
投稿: 15
Re: DataGrid内のフォーマット変更について
始めして!

var str:String = dtfm.format(item[column.dataField]);

この行でitem[column.dataField]は値を持っていますがフォーマット掛けるとstrはnullになってしまいます。

itemのデータ型と関連ありましょうか?

宜しくお願い致します。
Crono
投稿日時: 2008-7-18 19:02
ご主人様
登録日: 2006-6-21
居住地: 飯田橋/ヴァナディール
投稿: 229
Re: DataGrid内のフォーマット変更について
始めして!くろのさんです。

上記のサンプルでは動いていますね。
このサンプルを応用してアプリを作り、
デバッグで確認したところstrがnullになったのですかね?

・item[column.dataField]の中身がDate型であれば、
キャストして無くてもOKです。
(dtfm.format(Date(item[column.dataField]));としなくてOK)
・そうでない型の値を渡したい場合は、一旦Dateへの変換処理を行うか、別途目的の型の値を引数に取Formatterを作る必要があります。
・さらに良く分からない問題の場合、もう少し長めの「動いていないコード」をここにはっつけてください。
masan
投稿日時: 2010-10-5 13:34
ご主人様
登録日: 2007-6-8
居住地:
投稿: 120
Re: DataGrid内のフォーマット変更について
masanです。

ここで教えていただいた方法で、日付表示の変更を試みたですが、空白になってしまいます。
他の例の場合は、日付表示が変更できています。
下記がそのソースになるのですが、原因がわかるでしょうか?


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:seasar="http://www.seasar.org/s2flex2/mxml"
xmlns:iBiz="http://www.necst.co.jp/ibizblock/mxml"
xmlns:avpdd2="avpdd2.web.avpdd2.*"
xmlns:ns2="avpdd2.menu.*"
backgroundColor="#FFFFFF"
layout="absolute"
creationComplete="initApp()">

<seasar:S2Flex2Service id="service" destination="avpdd2_s1Service" showBusyCursor="true"/>
<avpdd2:s1Page id="page"/>

<mx:Script source="avpdd2/actionscript/s2.as"/>
<mx:Script>
<![CDATA[
private function hoge(item:Object, column:DataGridColumn):String {
if (column.dataField == "nouki") {
// return item.nouki;
return dtfm.format(item.nouki);
} else
return "err";
// var str:String = dtfm.format(item[column.dataField]);
// return str;
}

]]>
</mx:Script>

<mx:Style>
global { themeColor: #FF0F00;
fontSize:12;
}
</mx:Style>
<ns2:avpddMenu/>
<mx:DateFormatter id="dtfm" formatString="YYYY/MM/DD"/>
<mx:VBox x="0" y="0" height="100%" width="100%" horizontalAlign="center">
<mx:HBox height="30"/>
<mx:Image source="images/s2.png"/>
<mx:HBox>
<mx:Label/>
</mx:HBox>
<mx:DataGrid id="grid2" rollOverColor="#CCFFFF" selectionColor="#00FFFF" rowCount="16" >
<mx:columns>
<mx:DataGridColumn headerText="依頼No." dataField="no" textAlign="left" width="90">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="新・繰" dataField="shinkuri" textAlign="left" width="50">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="OENo" dataField="userno" textAlign="left" width="130">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="BS品番" dataField="bsno" textAlign="left" width="130">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="数量" dataField="kazu" textAlign="right" width="50">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="設計部署" dataField="busyo" textAlign="left" width="70">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="試作場所" dataField="place" textAlign="left" width="70">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="納期" dataField="nouki" textAlign="left" labelFunction="hoge" width="180">
<mx:headerRenderer>
<mx:Component>
<mx:Label textAlign="center"/>
</mx:Component>
</mx:headerRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
</mx:VBox>
</mx:Application>

上記のソースは、原因を探るためにおかしなコーディングになっていることはご容赦ください。

以上、よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を