| MVC Classic ウィジェット > Wijgrid > カスタムデータパーサー |
データを解析するために wijgrid ウィジェットにカスタムデータパーサーを簡単に追加できます。例については、Web サイト(http://demo.componentone.com/ASPNET/MVCExplorer/grid/CustomDataParsers)にアクセスし、MVC コントロールエクスプローラの grid > CustomDataParsers サンプルのライブデモをご覧ください。
以下の手順を実行します。
@RenderBody() のすぐ後のページの <body> タグ内に追加します。
| ソースビュー |
コードのコピー
|
|---|---|
<div class="main demo">
<table id="demo">
<thead>
<tr>
<th>Boolean</th><th>Boolean Parsed</th><th>Number</th><th>Number Parsed</th>
</tr>
</thead>
<tbody>
<tr>
<td>off</td><td>off</td><td>1</td><td>1</td>
</tr>
<tr>
<td>on</td><td>on</td><td>2</td><td>2</td>
</tr>
<tr>
<td>off</td><td>off</td><td>1993</td><td>1993</td>
</tr>
<tr>
<td>off</td><td>off</td><td>2015</td><td>2015</td>
</tr>
<tr>
<td>on</td><td>on</td><td>100</td><td>100</td>
</tr>
</tbody>
</table>
</div>
|
|
このマークアップは1つのテーブル用のコンテンツを追加します。
</div> 終了タグの後に、以下の jQuery スクリプトを入力して wijgrid ウィジェットを初期化します。
| ソースビュー |
コードのコピー
|
|---|---|
<script id="scriptInit" type="text/javascript">
$(document).ready(function () {
var customBoolParser = {
// DOM→ブール
parseDOM:function (value, culture, format, nullString) {
return this.parse(value, culture, format, nullString);
},
// 文字列/ブール→ブール
parse:function (value, culture, format, nullString) {
if (typeof (value) === "boolean") {
return value;
}
if (typeof (value) === "string") {
value = $.trim(value);
}
if (!value || value === " " || value === nullString) {
return null;
}
switch ($.trim(value.toLowerCase())) {
case "off":return false;
case "on":return true;
}
return NaN;
},
// ブール→文字列
toStr:function (value, culture, format, nullString) {
return value ?"on" :"off";
}
};
$("#demo").wijgrid({
allowSorting:true,
columns: [
{},
{ dataType: "boolean", dataParser: customBoolParser },
{ dataType: "number", dataFormatString: "n0" },
{ dataType: "number", dataParser: customRomanParser }
]
});
});
function customRomanParser() {
// DOM→数値
this.parseDOM = function (value, culture, format, nullString) {
return this.parse(value.innerHTML);
},
// 文字列/数値→数値
this.parse = function (value, culture, format, nullString) {
if (typeof (value) === "number" && (value === 0 || isNaN(value))) {
return NaN;
}
if (!value || (value === " ") || (value === nullString)) {
return null;
}
if (!isNaN(value)) {
return parseInt(value);
}
value = roman(value);
return !value ?NaN :value;
},
// 数値→文字列
this.toStr = function (value, culture, format, nullString) {
if (value === null) {
return nullString;
}
return roman(value);
};
var arab_nums = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000];
var roman_nums = ['I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M'];
function roman(value) {
if (typeof (value) === "number") {
return (function (arab) {
var roman = "";
for (var i = 12; arab > 0; ) {
if (arab >= arab_nums[i]) {
roman += roman_nums[i];
arab -= arab_nums[i];
} else {
i--;
}
}
return roman;
})(value);
}
else {
return (function (roman) {
roman = roman.toUpperCase();
var arab = 0;
for (var i = 12, pos = 0, len = roman.length; i >= 0 && pos < len; ) {
if (roman.substr(pos, roman_nums[i].length) === roman_nums[i]) {
arab += arab_nums[i];
pos += roman_nums[i].length;
}
else {
i--;
}
}
return arab;
})(value);
}
}
}
</script>
|
|
これにより、グリッドにデータパーサーが設定されます。
このトピックの作業結果[F5]を押してアプリケーションを実行し、グリッドの2列目と4列目にデータパーサーが適用されていることを確認します。