Silverlight JSON

索引サイト表示
PHP にて MySQL データを橋渡しする。JSON 使用

clientaccesspolicy.xml (サーバーアクセス許可)・・ザル仕様




<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

サーバー側 PHP にて JSON データ作成




<?php
$p_table = 'tablename';
$p_sql = 'SELECT * from '.$p_table.' order by code';

$conn = mysql_connect('server', 'user', 'password') or die(mysql_error());
mysql_select_db('database') or die(mysql_error());
$res = mysql_query($p_sql) or die(mysql_error());
// 返値編集
$array=array();
while ($row = mysql_fetch_array($res, MYSQL_NUM))
{
$array[] = array("code"=>$row[0],"name"=>$row[1],"data"=>$row[2]);
}
mysql_free_result($res);
mysql_close($conn);
// JSON変換
$returnItems = array("returnType"=>"tableItems","results"=>$returnItems);
$JSONresult = json_encode($array);
echo $JSONresult;
?>

Sliverlight にて取り込み
(note) using System.Json;




namespace SilverlightApplication2
{
public partial class MainPage : UserControl
{
WebClient wc = new WebClient();
string baseURI = "http://XXXXXXXX.YYY/ZZZ/";

public MainPage()

{
InitializeComponent();
wc.DownloadStringCompleted += new System.Net.DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
}

void wc_DownloadStringCompleted(object sender, System.Net.DownloadStringCompletedEventArgs e)
{
MessageBox.Show(e.Result);
string jsString = e.Result;

JsonArray jsArray = (JsonArray)JsonArray.Parse(jsString);

List<string> header = new List<string>();
List<webItem> myList = new List<webItem>();

foreach (JsonObject value in jsArray)
{
myList.Add(new webItem { code = value["code"], name = value["name"], data = value["data"] });
//同義
// string wCode = value["code"];
// string wName = value["name"];
// string wData = value["data"];
// myList.Add(new webItem {code=wCode , name=wName , data=wData});

foreach (var key in value.Keys)
{
header.Add(key);
header.Add(value[key]);
}
}
xnDataGrid.ItemsSource = myList;
xnTreeView.ItemsSource = header;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
wc.DownloadStringAsync(new Uri(baseURI + "json444.php"));
}
}
}




namespace SilverlightApplication2
{
public class webItem
{
public string code { get; set; }
public string name { get; set; }
public string data { get; set; }
}
}

画面例




<UserControl x:Class="SilverlightApplication2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="5*" />
<RowDefinition Height="30*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200*" />
<ColumnDefinition Width="100*" />
</Grid.ColumnDefinitions>
<sdk:DataGrid AutoGenerateColumns="False" Margin="5" x:Name="xnDataGrid" Grid.RowSpan="2">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn IsReadOnly="True" Header="Code" Binding="{Binding code}"/>
<sdk:DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding name}"/>
<sdk:DataGridTextColumn IsReadOnly="True" Header="Data" Binding="{Binding data}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<Button Content="Button" Margin="5" Name="button1" Click="button1_Click" Grid.Column="2" />
<sdk:TreeView Margin="5" x:Name="xnTreeView" Grid.Column="2" Grid.Row="1" />
</Grid>
</UserControl>



AX

TYKYUNC index