在dojo中显示数据

时间:2012-06-02 10:21:58

标签: html xml dojo

我有一个包含一组数据的XML文件,这必须在HTML页面的许多dojo内容窗格之一中表示。我试过dojox.grid.DataGrid并且它有效;但是由于数据网格通常用于表示表格数据,我不想使用数据网格。

有没有其他方式以简单的格式表示这些数据?

XML文件是这样的:

<Summary>
   <neName>abc</neName>
   <neType>pqr</neType>
   <neRelease>2.0</neRelease>
   <neAddress>10.10.82.105</neAddress>
   <supervisionState>SUPERVISED</supervisionState>
   <operationalState>ENABLED</operationalState>
   <alignmentState>ALIGNED</alignmentState>
   <criticalAlarms>0</criticalAlarms>
   <majorAlarms>0</majorAlarms>
   <minorAlarms>0</minorAlarms>
   <noOfShelves>5</noOfShelves>
</Summary>

我希望这些数据表示如下:

enter image description here

2 个答案:

答案 0 :(得分:2)

根据您想要的数据,我会选择HTML元素的基本css样式,而不是任何小部件。

但是,您可以使用dgrid

检查:

https://github.com/SitePen/dgrid/

http://www.sitepen.com/blog/category/dgrid/

答案 1 :(得分:1)

如果你感觉活泼,你可以制作一种通用的XML数据小部件。这是我前一段时间的例子。

dojo.declare("foo.XmlDisplay", dijit._Widget, {

    postCreate: function()
    {
        this.inherited(arguments);
        dojo.xhrGet({
            url: this.href,
            handleAs: "xml",
            load: dojo.hitch(this, "setData")
        });

    },

    setData: function(data)
    {
        // All items with a xmldisp-tag attribute should get data
        dojo.query("*[data-xmldisp-tag]", this.containerNode).forEach(
            function(item) {
                var tag   = dojo.attr(item, "data-xmldisp-tag");
                var value = data.getElementsByTagName(tag);
                if(value.length == 1) item.innerHTML = value[0].textContent;
                else console.warn("No data in xml for",tag);
            }
        );
    }
});

然后你可以在你的HTML中使用这样的东西(即小部件不关心你如何显示数据,它只是使用给定的标签名称来从服务器查找XML中的数据):

<div data-dojo-type="foo.XmlDisplay" href="/MyXmlStuff?id=42">
    <dl>
        <dt>NE name</dt><dd data-xmldisp-tag="nename">-</dd>
        <dt>NE type</dt><dd data-xmldisp-tag="netype">-</dd>
    </dl>
    <dl>
        <dt>Alarms</dt><dd data-xmldisp-tag="majoralarms">-</dd>
        <dt>Minor</dt><dd data-xmldisp-tag="minoralarms">-</dd>
    </dl>
</div>

您可以尝试以下修改过的jsfiddle:http://fiddle.jshell.net/K4UnJ/3/

根本不确定这是否适合您的任务,但由于我的代码非常相似,我以为我会分享。