Как я могу преобразовать FRM PHP в C # или JSON (ExtJS) - PullRequest
0 голосов
/ 14 июня 2011

я использую пример browser-layout для своего приложения

я пытаюсь добавить два дерева к нему

что я пытаюсьздесь нужно определить два дерева в отдельном файле, мой основной файл - layout-browser.js, и мне нужно добавить это (и другие) во вкладки, которые у меня есть в нем.не стесняйтесь задавать мне другие вопросы, если это не клер, и, пожалуйста, держитесь со мной, я действительно новичок во всем этом и не могу понять это

проблема в том, что я использую .net, и примерphp

так как я могу сделать эту работу в .net

вот мой код:

Ext.require (['*']);

var store = Ext.create('Ext.data.TreeStore', {
    proxy: {
        type: 'ajax',
        url: 'get-nodes.php'
    },
    root: {
        text: 'Ext JS',
        id: 'src',
        expanded: true
    },
    folderSort: true,
    sorters: [{
        property: 'text',
        direction: 'ASC'
    }]
});

var tree = Ext.create('Ext.tree.Panel', {
    id: 'tree',
    store: store,
    width: 250,
    height: 300,
    columnWidth: 0.5,
    viewConfig: {
        plugins: {
            ptype: 'treeviewdragdrop',
            appendOnly: true
        }
    }
   // ,renderTo: document.body
});

var store2 = Ext.create('Ext.data.TreeStore', {
    proxy: {
        type: 'ajax',
        url: 'get-nodes.php'
    },
    root: {
        text: 'Custom Ext JS',
        id: 'src',
        expanded: true,
        children: []
    },
    folderSort: true,
    sorters: [{
        property: 'text',
        direction: 'ASC'
    }]
});

var tree2 = Ext.create('Ext.tree.Panel', {
    id: 'tree2',
    width: 250,
    height: 300,
    columnWidth: 0.5,
    store: store2,
    viewConfig: {
        plugins: {
            ptype: 'treeviewdragdrop',
            appendOnly: true
        }
    }
   // ,renderTo: document.body
});


Ext.define("Ext.app.myTwoTrees",{
extend:"Ext.panel.Panel",

width : 600,
height: 350,
layout: 'column',
items: [
         tree , tree2
       ]

});

я называю это на своей вкладке вот так

 Ext.create('Ext.app.myTwotrees')

вот get-node.php

<?php
// from php manual page
function formatBytes($val, $digits = 3, $mode = 'SI', $bB = 'B'){ //$mode == 'SI'|'IEC', $bB == 'b'|'B'
   $si = array('', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y');
   $iec = array('', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi');
   switch(strtoupper($mode)) {
       case 'SI' : $factor = 1000; $symbols = $si; break;
       case 'IEC' : $factor = 1024; $symbols = $iec; break;
       default : $factor = 1000; $symbols = $si; break;
   }
   switch($bB) {
      case 'b' : $val *= 8; break;
      default : $bB = 'B'; break;
   }
  for($i=0;$i<count($symbols)-1 && $val>=$factor;$i++)
       $val /= $factor;
  $p = strpos($val, '.');
   if($p !== false && $p > $digits) $val = round($val);
   elseif($p !== false) $val = round($val, $digits-$p);
   return round($val, $digits) . ' ' . $symbols[$i] . $bB;
}

// grab the custom params
$path = isset($_REQUEST['path'])&&$_REQUEST['path'] == 'extjs' ? '../../../' : '../../';

$node = isset($_REQUEST['node']) ? $_REQUEST['node'] : '';
   $isXml = isset($_REQUEST['isXml']);

if(strpos($node, '..') !== false){
   die('Nice try buddy.');
}

$nodes = array();
$directory = $path.$node;
   if (is_dir($directory)){
       $d = dir($directory);
        while($f = $d->read()){
            if($f == '.' || $f == '..' || substr($f, 0, 1) == '.') continue;

    $filename = $directory . '/' . $f;
    date_default_timezone_set('America/Los_Angeles');
    $lastmod = date('M j, Y, g:i a', filemtime($filename));

    if(is_dir($directory.'/'.$f)){
        $qtip = 'Type: Folder<br />Last Modified: '.$lastmod;
        $nodes[] = array(
            'text' => $f,
            'id'   => $node.'/'.$f,
            'cls'  => 'folder'
        );
    } else {
        $size = formatBytes(filesize($filename), 2);
        $qtip = 'Type: JavaScript File<br />Last Modified: '.$lastmod.'<br />Size: '.$size;
        $nodes[] = array(
            'text' => $f,
            'id'   => $node.'/'.$f,
            'leaf' => true,
            'cls'  => 'file'
        );
    }
}
$d->close();
}

if ($isXml) {
    $xmlDoc = new DOMDocument();
    $root = $xmlDoc->appendChild($xmlDoc->createElement("nodes"));
    foreach ($nodes as $node) {
    $xmlNode = $root->appendChild($xmlDoc->createElement("node"));
    $xmlNode->appendChild($xmlDoc->createElement("text", $node['text']));
    $xmlNode->appendChild($xmlDoc->createElement("id", $node['id']));
    $xmlNode->appendChild($xmlDoc->createElement("cls", $node['cls']));
    $xmlNode->appendChild($xmlDoc->createElement("leaf", isset($node['leaf'])));
}
header("Content-Type: text/xml");
$xmlDoc->formatOutput = true;
echo $xmlDoc->saveXml();
} else {
    echo json_encode($nodes);
}

спасибо большое

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Попробуйте Dextop .Это среда приложения для связи между ASP.NET и Ext JS.

1 голос
/ 14 июня 2011

Я бы порекомендовал вам разбить проблему на две части:

1) изменить url: 'get-nodes.php' на url: 'my-dotnet-url и заставить страницу .NET возвращать статический JSON или XML (жестко закодировать значения в дереве)

Это подтвердит, что все ваши javascript, ресурсы и т. Д. Работают правильно, и что вы задаете вопрос .NET только о том, как выводить определенные данные.

2) Затем найдите пример .NET, который позволит вам создавать JSON или XML, откуда бы вы ни брали данные (наверное, базу данных). Вам просто нужно, чтобы вывод был похож на ваши статические данные, которые работали правильно. Если вы не очень хорошо разбираетесь в PHP или .NET, изучите .NET, чтобы получить правильный вывод, было бы проще, чем пытаться портировать через этот пример. Если вы застряли, я бы перепостил другой вопрос и спросил, как динамически выводить данные, которые получаются из этого статического файла, и при этом не возникает сложностей с extjs!

Надеюсь, это поможет.

...