スポンサーリンク

Yahoo!YUIライブラリのDataTableを使ってみた。
DataTableを使うと、JavaScriptの配列やJSON、XMLなどを簡単にテーブルに整形することができる。

表示するXML

<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">

<channel>
<title>Yahoo!ニュース・トピックス - コンピュータ</title>
<link>http://dailynews.yahoo.co.jp/fc/computer/</link>
<description>Yahoo! JAPANのニュース・トピックスで取り上げている最新の見出しを提供しています。</description>
<language>ja</language>
<pubDate>Tue, 09 Oct 2007 22:21:55 +0900</pubDate>

<item>
<title>「iPhoneロックは違法」と提訴</title>
<link>http://rd.yahoo.co.jp/rss/l/topics/topics/*http://dailynews.yahoo.co.jp/fc/computer/iphone/</link>
<pubDate>Tue, 09 Oct 2007 21:02:03 +0900</pubDate>
<enclosure url="http://i.yimg.jp/images/icon/photo.gif" />
</item>

<item>
<title>Google、ビデオ版AdSense開始</title>
<link>http://rd.yahoo.co.jp/rss/l/topics/topics/*http://dailynews.yahoo.co.jp/fc/computer/internet_advertisement/</link>
<pubDate>Tue, 09 Oct 2007 14:41:12 +0900</pubDate>
</item>

<item>
<title>KDDI 100万人に通信料誤請求</title>
<link>http://rd.yahoo.co.jp/rss/l/topics/topics/*http://dailynews.yahoo.co.jp/fc/economy/kddi/</link>
<pubDate>Tue, 09 Oct 2007 21:53:31 +0900</pubDate>
</item>

<item>
<title>ニコニコブックマーク早くも終了</title>
<link>http://rd.yahoo.co.jp/rss/l/topics/topics/*http://dailynews.yahoo.co.jp/fc/computer/social_bookmark/</link>
<pubDate>Tue, 09 Oct 2007 14:31:15 +0900</pubDate>
<enclosure url="http://i.yimg.jp/images/icon/photo.gif" />
</item>

<item>
<title>「ネットで個人写真集」が人気</title>
<link>http://rd.yahoo.co.jp/rss/l/topics/topics/*http://dailynews.yahoo.co.jp/fc/computer/digital_images/</link>
<pubDate>Tue, 09 Oct 2007 11:03:13 +0900</pubDate>
</item>

<item>
<title>4万円切る廉価版PS3発売へ</title>
<link>http://rd.yahoo.co.jp/rss/l/topics/topics/*http://dailynews.yahoo.co.jp/fc/entertainment/play_station_3/</link>
<pubDate>Tue, 09 Oct 2007 20:25:35 +0900</pubDate>
<enclosure url="http://i.yimg.jp/images/icon/photo.gif" />
</item>

<item>
<title>空気読む力 テストで数値化</title>
<link>http://rd.yahoo.co.jp/rss/l/topics/topics/*http://dailynews.yahoo.co.jp/fc/computer/internet/</link>
<pubDate>Mon, 08 Oct 2007 22:30:42 +0900</pubDate>
</item>

</channel>
</rss>

表示する項目

上記のXMLの item の title,link,pubDate を表示する。

テーブルの見出し部分の表示名(label)とタグ(key)対応付けをする(しないと、keyがそのまま表示される)。
sortableをtrueに指定すると、そのカラムでソートすることができる。
                var myColumnDefs = [
			{key:"title",label:"タイトル", sortable: true },
			{key:"link",label:"リンク" },
			{key:"pubDate",label:"日時", sortable: true }
                ];


レスポンス形式はXML(YAHOO.util.DataSource.TYPE_XML)を指定する。
resultNodeは、"item"を指定する(XMLによる)。
XMLから抜き出すフィールドを fields に指定する。今回は、title,link,pubDateの3つ。
                this.myDataSource = new YAHOO.util.DataSource(xmlDoc);
                this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;
                this.myDataSource.responseSchema = {
                    resultNode: "item",
                    fields: ["title","link","pubDate"]
                };

asyncRequestでXMLデータを取得する。第2引数がXMLへのパスになる。
        this.getXML = YAHOO.util.Connect.asyncRequest("GET",
                "yui-DataTable.xml",
                this.connectionCallback);

サンプルコード

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title>Yahoo! UI Library: DataTable</title>

<!--CSS file (default YUI Sam Skin) -->
<link type="text/css" rel="stylesheet" href="http://yui.yahooapis.com/2.3.1/build/datatable/assets/skins/sam/datatable.css">

<!-- Dependencies -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/element/element-beta-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/datasource/datasource-beta-min.js"></script>

<!-- OPTIONAL: External JSON parser from http://www.json.org/ (enables JSON validation) -->
<script type="text/javascript" src="http://www.json.org/json.js"></script>

<!-- OPTIONAL: Connection (enables XHR) -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/connection/connection-min.js"></script>

<!-- OPTIONAL: Drag Drop (enables resizeable columns) -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/dragdrop/dragdrop-min.js"></script>

<!-- OPTIONAL: Calendar (enables calendar editors) -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/calendar/calendar-min.js"></script>

<!-- Source files -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/datatable/datatable-beta-min.js"></script>
</head>

<body class="yui-skin-sam">

	<h1>YUI DataTableの使い方</h1>
	<p>
	2007/10/09 に
	http://dailynews.yahoo.co.jp/fc/computer/rss.xml
	から取得したXMLデータ。
	</p>

	<div id="myContainer"></div>

	<script type="text/javascript">
YAHOO.util.Event.addListener(window, "load", function() {
    YAHOO.example.Local_XML = new function() {
        this.connectionCallback = {
            success: function(o) {
                var xmlDoc = o.responseXML;

                var myColumnDefs = [
			{key:"title",label:"タイトル", sortable: true },
			{key:"link",label:"リンク" },
			{key:"pubDate",label:"日時", sortable: true }
                ];

                this.myDataSource = new YAHOO.util.DataSource(xmlDoc);
                this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;
                this.myDataSource.responseSchema = {
                    resultNode: "item",
                    fields: ["title","link","pubDate"]
                };

                this.myDataTable = new YAHOO.widget.DataTable("myContainer", myColumnDefs, this.myDataSource);

            },
            failure: function(o) {

            }
        };

        this.getXML = YAHOO.util.Connect.asyncRequest("GET",
                "yui-DataTable.xml",
                this.connectionCallback);
    };
});

</script>

</body>
</html>

非常に簡単にXMLをキレイに表示できる。

参考
http://developer.yahoo.com/yui/datatable/

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー