2011-06-14 44 views
0

我使用的是browser-layout例如我的應用程序我如何轉換FRM PHP到C#或JSON(ExtJS的)

我嘗試添加two trees

什麼即時試圖在這裏做的是定義在一個單獨的文件中雙擊,我的主文件是layout-browser.js,我需要在我有它的選項卡中添加此(和其他)。隨時問我,如果它不是克萊爾等問題,並請與我裸露的IM真正新的這一切,並不能得到它

問題的擱置是,即時通訊使用.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-nodes.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

這個問題問了很多。你應該做的是嘗試自己轉換它,然後回到這裏,回答關於轉換過程中遇到的問題的具體問題。 – 2011-06-14 15:57:15

+0

甚至不知道如何開始,即時通訊開始.net,並不能真正理解這個PHP代碼。即時通訊要求一種方式來做到這一點,或者來到它周圍,仍然得到相同的結果,我不在乎數據或任何東西,只需要拖放樹木之間的工作 – Armance 2011-06-14 16:05:39

+0

這不是一個「幫我寫我的代碼「網站,而是一個」幫我解決這個問題「的網站。如果您不知道如何編寫代碼,您應該首先查看一些教程。買些書...開始吧。 – 2011-06-15 08:01:49

回答

1

我建議你打破問題分成兩塊:

1)將url: 'get-nodes.php'更改爲url: 'my-dotnet-url,並使.NET頁面返回靜態JSON或XML(將值硬編碼到樹中)

這將確認您的所有JavaScript,資源等正在正常工作,並且您只問一個關於如何輸出某些數據的.NET問題。

2)然後找到一個.NET示例,它可以讓您從任何地方獲取數據(我猜測可能是數據庫)創建JSON或XML。你只需要輸出看起來像你正常工作的靜態數據。如果你不知道很多PHP或.NET學習.NET來讓你的輸出正確的話比試圖移植那個例子更容易。如果您遇到困難,我會重新發佈一個不同的問題,並詢問如何動態輸出由該靜態文件產生的數據,並且不會涉及extjs複雜問題!

希望這會有所幫助。

1

嘗試Dextop。它是ASP.NET和Ext JS之間連接的應用程序框架。