当前位置: 首页 > 知识库问答 >
问题:

JavaScript-使用xml数据生成Kendo Ui网格

李烨
2023-03-14

我一直在使用XSLT来显示我的xml页面。我利用以下方法从xml文件中获取数据:

在此之后,我有以下javascript来清理数据并进行转换:

-----------Get Content for Grids----------

  //Split Content into array
  var purposeArray = document.getElementById('purposeOfVisit').innerHTML.split("\n");
  var activeProblemArray = document.getElementById('activeProblems').innerHTML.split("\n");


  //------------  Remove All Unwanted Values-----------\\*/
  var newDataString ="";
  for( var k = 0; k < purposeArray.length; k++ )
  {
      newDataString += purposeArray[k] + "__";
  }
  newDataString = newDataString.replace(/  /g,"");
  newDataString = newDataString.replace(/__________/g,"__-__");
  var newDataArray = newDataString.split("__");

  //------------- Save Values in final Array -------------\\*/
  var semiFinalArray = new Array();
  for( var x=0; x < newDataArray.length; x++)
  {
      if(newDataArray[x].length != 0)
      {
          semiFinalArray.push(newDataArray[x]);
      }
  }
  var finalArray = new Array();
  var counter = 0;
  //------------  Find Number of Columns in row   ------------\\*/
  var numberOfRows = document.getElementById('numberOfRows').innerHTML;
  var numberOfColumns = document.getElementById('numberOfColumns').innerHTML;
  var columnsPerRow = parseInt(numberOfColumns) / parseInt(numberOfRows);

  //------------------------------Testing ------------------------------//
  var dataNamePre = "dataValue";

  var temporaryArray = new Array();
  var dataName;

      //-----------   Generate Grid Values    -----------//
  for( var b=0 ; b < semiFinalArray.length ; b = b + columnsPerRow)
  {
      var problemComment = "";
      counter = 0;
      var obj;

      for( var a=0 ; a < columnsPerRow ; a++)
      {
          dataName = dataNamePre + counter.toString() + "";
  //-------Generate Grid Titles------//
          temporaryArray.push("Title " + (counter+1));

          var key = "key"+a;

          obj = { values : semiFinalArray[b+a] };

          var problemComment = "";
          finalArray.push(obj); 

          counter++;
      }
  }
  //---------------------Generate GridArray---------------------------//

  var gridArray = [];
  var gridArrayHead = new Array();
  counter = 0;
  var objectValue = new Array();

  for( var x = 0; x < finalArray.length; x++ )
  {
      objectValue = { head:temporaryArray[x], values: finalArray[x].values }
      gridArray.push(objectValue);
  }

  var provFacilities = [];

  for( var x = 0; x < finalArray.length; x++ )
  {
      provFacilities[x] = 
      {
          head:temporaryArray[x], values: finalArray[x].values
      }
  }

  //alert(gridArray);
  $("#grid").kendoGrid(
  {
      columns: 
      [{
          title:gridArray.head,  
          template:'#= values #'
      }],
      dataSource: {
          data:finalArray,
          pageSize:10
      },
      scrollable:false,
      pageable:true
  });

这可能是一种迂回的方法,但我对这种编码方法还是比较陌生的。目前,所有数据都显示在一列中,临时数组中的最后一个值作为该列的标题。

在我尝试为剑道网格设置数据源之前,一切都正常。在网格中使用columns属性时,我做了以下更改:

标题:gridArray[0]。头

完成此操作后,标题将更改为数组中的第一个值。

我想知道的是如何根据标题在剑道网格中生成列?有没有办法循环所有的值并从那里创建对象,看到发送到网格的日期是数组中的对象?

我基本上想要的是让它工作起来,而不需要重复:

var myGrid = $("#rid"). kendGrid({列:[{title:暂时数组[0],
字段: finalArray[0].值},{title:暂时数组[1],
字段: finalArray[1].值},{title:暂时数组[2],
字段: finalArray[2].值},{title: timearyArray[3],
字段: finalArray[3].值},{title: timearyArray[4],
字段: finalArray[4].值 } ] )};

任何帮助赞赏,谢谢!

共有1个答案

何睿范
2023-03-14

已使用以下编码修复此问题:

var arrayData = [];

for( var x = 0; x < semiFinalArray.length; x=x+5 )
{
    var tempArr = new Array();

    for( var y = 0; y < 5; y++ )
    {
        var num = x + y;
        tempArr.push(semiFinalArray[num]);
    }
    arrayData.push(tempArr);
}

var dataTitles = [];
for( var x = 0; x < titleArray.length; x++ )
{
    var head = "";
    head = titleArray[x];
    head = head.replace(/ /g,"");
    dataTitles.push(head);
}


var counter = 0;
var columnDefs = [];
for (var i = 0; i < columnsPerRow.length; i++) 
{
    if (counter == (columnsPerRow - 1)) 
    {
        counter = 0;
    }
    columnDefs.push({ field: dataTitles[counter], template: arrayData[i].values });
    counter++;
}
// Create final version of grid array
var gridArray = [];
for (var i = 0; i < arrayData.length; i++) 
{
    var data = {};
    for (var j = 0; j < dataTitles.length; j++) 
    {
        data[dataTitles[j]] = arrayData[i][j];
    }
    gridArray.push(data);
}
// Now, create the grid using columnDefs as argument
$("#grid").kendoGrid(
{
    dataSource: 
    {
        data: gridArray,
        pageSize: 10
    },
    columns: columnDefs,
    scrollable: false,
    pageable: true
}).data("kendoGrid");

这样,数据就会显示在DataGrid中。

 类似资料:
  • 问题内容: 我的问题是:如何从网站抓取数据,但是直到单击例如“Danhsáchchậm”,该数据才显示。我已经非常认真地尝试,当您单击“Danhsáchchậm”时,这是onclick事件,该事件触发了一些javascript函数js函数之一是从服务器获取数据并将其插入标签/占位符,然后在此时,您可以使用firefox之类的方法检查数据,是的,数据将显示给网页上的用户/查看者。因此,我们又该如何以

  • 问题内容: 我的问题是:如何从网抓取数据,但是直到您单击例如“ Danhsáchchậm”,该数据才显示。我已经非常认真地尝试,当您单击“ Danhsáchchậm”时,这是onclick事件,它触发了一些javascript函数js函数之一是从服务器获取数据并将其插入到标签/占位符中,并在这时,您可以使用firefox之类的方法检查数据,是的,数据会在网页上显示给用户/查看者。因此,我们又该如何

  • 问题内容: 我有一个webBrowser,在Visual Studio中有一个标签,基本上我想做的是从另一个网页中抓取一个部分。 我尝试使用WebClient.DownloadString和WebClient.DownloadFile,在JavaScript加载内容之前,它们都为我提供了网页的源代码。我的下一个想法是使用WebBrowser工具,并在页面加载后仅调用webBrowser.Docum

  • 问题内容: 有人知道使用SAX框架(或类似的东西)和Java编写XML的好教程(或有好的示例)吗?就有用的结果而言,搜索产生的很少。我正在尝试从Android应用程序导出,并希望避免尽可能多的内存开销。 问题答案: 有一种非常有用的技术,可以通过 SAX框架 (不是SAX解析器,而是SAX框架)直接从POJO 生成 XML 。该技术可用于 生成XML文档 。 从任意数据结构生成XML http:/

  • 本文向大家介绍iOS开发使用XML解析网络数据,包括了iOS开发使用XML解析网络数据的使用技巧和注意事项,需要的朋友参考一下 前言:本篇随笔介绍的是XML解析。 正文: 1、XML解析方式有2两种: DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件 2、IOS中XML解析方案有很多种:   2-1、第三方

  • 当我试图使用数据绑定和绑定布局中的自定义XML标记运行项目时,遇到以下描述的构建错误: