pirkak公式サイト|株式会社 オリエンタルアーツ
HOMEpirka TOP > サンプル集
pirka サンプル集

> 戻る

ループ内のフィールドの初期値の設定方法


≪サンプル説明≫  

コンストラクタでループ内の各フィールドのフォーマット、日本語名称、属性を設定しています。


≪作成時注意点≫ 

・ループ内の各フィールドの初期値の設定はJavaクラスのコンストラクタや
 サブミットボタン等がクリックされたときに動作するアクションメソッド内で行います。

・初期値設定を行うループフィールドのフィールドマップをgetDefaultLoopFieldMap
 メソッドを使用して取得します。
 【例】 FieldMap loopField = getDefaultLoopFieldMap("loopItem");

・取得したフィールドマップ内の各フィールドに値やフォーマット情報等を設定します。

 その他設定はcreateLoopFieldMapメソッドで作成されるフィールドマップのデフォルト値となります。

 またsetDtoメソッド、setBeanListメソッドでデータを格納したループにも用いられます。

 【例】
 loopField.setOfficialFieldName("amount", "数量");
 loopField.setFormat("unitPrice", new NumericFieldFormat("@#,##0"));
 loopField.setOption("amountOfMoneyTD", "style", "background-color: #c0ffc0");

・このメソッドで取得したフィールドマップはFieldMap#addFieldMapメソッドには使用できません。


ソースファイル
LoopDefault.html  サンプル画面のHTMLファイル

<html>
<head>
<title>pirka逆引きサンプル ループ内のフィールドの初期値の設定方法</title>
</head>
<body>
<center>
<span style="color: #8080ff">pirka逆引きサンプル ループ内のフィールドの初期値の設定方法</span><br>
<hr>
<form name="formItem" method="post">
<table border="1" style="font-size: 10pt">
<tr>
<th>No.</th><th>商品名</th><th>単価</th><th>数量</th><th>金額</th>
</tr>
<div type="loop" name="loopItem">
<tr>
<td width="30" align="right"><span name="no">1</span></td>
<td width="200"><span name="name">チョコレート</span></td>
<td width="100" align="right"><span name="unitPrice">150</span></td>
<td><input type="text" maxLength="12" size="20" name="amount" value="10"></td>
<td width="100" align="right" name="amountOfMoneyTD"><span name="amountOfMoney">1500</span></td>
</tr>
</div>
<tr>
<td>合計</td>
<td colspan="4" align="right" style="background-color: #c0c0ff"><span name="totalAmount">1500</span></td>
</tr>
<tr>
<td colspan="5"><input type="submit" name="calcButton" value="計算"></td>
</tr>
<tr>
<td colspan="5" style="color: #ff0000"><pre><span name="errorMessage"></span></pre></td>
</tr>
</table>
</form>
<hr>
<a name="returnWindow" href="">戻る</a>
</center>
</body>
</html>



LoopDefault.java  サンプル画面のJavaソースファイル

package jp.oarts.pirka.sample.instruction.is103300;

import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;

import jp.oarts.pirka.core.kernel.FieldMap;
import jp.oarts.pirka.core.util.check.PirkaChecker;
import jp.oarts.pirka.core.util.format.NumericFieldFormat;
import jp.oarts.pirka.core.win.PirkaWindow;

/**
* pirka逆引きサンプル ループ内のフィールドの初期値の設定方法
*/
public class LoopDefault extends PirkaWindow {

List<ListData> list;

/**
* コンストラクタ
*/
public LoopDefault() {
// データ
list = new LinkedList<ListData>();
list.add(new ListData("チョコレート", 1500, 0, 0));
list.add(new ListData("のどアメ", 100, 0, 0));
list.add(new ListData("おせんべい", 200, 0, 0));
list.add(new ListData("アイスクリーム", 250, 0, 0));

// チェッカー登録
addCheck("amount", PirkaChecker.intValue);
addErrorCheckReturner();

FieldMap field = getFieldMap();
field.setFormat("totalAmount", new NumericFieldFormat("\\#,##0"));

// ループ内のフィールドの初期値の設定
FieldMap loopField = getDefaultLoopFieldMap("loopItem");
loopField.setOfficialFieldName("amount", "数量");
loopField.setFormat("unitPrice", new NumericFieldFormat("@#,##0"));
loopField.setFormat("amount", new NumericFieldFormat("#,##0"));
loopField.setFormat("amountOfMoney", new NumericFieldFormat("\\#,##0"));
loopField.setOption("amountOfMoneyTD", "style", "background-color: #c0ffc0");

calc();
}

/**
* 再計算ボタン処理
*/
public void calcButton() {
FieldMap field = getFieldMap();
// 一覧データの一括取得
getBeanList(list, field, "loopItem");
calc();
}

/**
* 戻るリンク処理
*
* @return
*/
public PirkaWindow returnWindow() {
return null;
}

/**
* 計算
*/
private void calc() {

FieldMap field = getFieldMap();

// 計算
long total = 0;
int no = 0;
for (ListData data : list) {
data.setNo(++no);
data.setAmountOfMoney(((long) data.getUnitPrice()) * data.getAmount());
total += data.getAmountOfMoney();
}

// 一覧データの一括設定
setBeanList(list, field, "loopItem");

// 合計設定
field.setValue("totalAmount", total);
}

/**
* リストデータクラス
*/
public class ListData implements Serializable {

private int no;

private String name;

private int unitPrice;

private int amount;

private long amountOfMoney;

public ListData(String name, int unitPrice, int amount, long amountOfMoney) {
this.no = 0;
this.name = name;
this.unitPrice = unitPrice;
this.amount = amount;
this.amountOfMoney = amountOfMoney;
}

/**
* @return no を戻します。
*/
public int getNo() {
return no;
}

/**
* @param no 設定する no。
*/
public void setNo(int no) {
this.no = no;
}

/**
* @return amount を戻します。
*/
public int getAmount() {
return amount;
}

/**
* @param amount 設定する amount。
*/
public void setAmount(int amount) {
this.amount = amount;
}

/**
* @return amountOfMoney を戻します。
*/
public long getAmountOfMoney() {
return amountOfMoney;
}

/**
* @param amountOfMoney 設定する amountOfMoney。
*/
public void setAmountOfMoney(long amountOfMoney) {
this.amountOfMoney = amountOfMoney;
}

/**
* @return name を戻します。
*/
public String getName() {
return name;
}

/**
* @param name 設定する name。
*/
public void setName(String name) {
this.name = name;
}

/**
* @return unitPrice を戻します。
*/
public int getUnitPrice() {
return unitPrice;
}

/**
* @param unitPrice 設定する unitPrice。
*/
public void setUnitPrice(int unitPrice) {
this.unitPrice = unitPrice;
}

}

}

ページのTOPへ このページの先頭へ
oriental arts pirka