Flex と .NET の相互運用性 (3): WebService に基づくデータ アクセス (2)
前回の記事「Flex と .NET の相互運用性 (2): WebService に基づくデータ アクセス (1)」では、
WebService クラスを使用して WebService にアクセスするということは、実際には、クラス オブジェクトの属性形式を通じて
1 innerfunctiononClick():void
2{
3varservice:WebService=newWebService();
4service.loadWSDL("http: //localhost:1146/FlashFlexService.asmx?wsdl");
5service.addEventListener(ResultEvent.RESULT,onResult);
6service.addEventListener(FaultEvent.FAULT,onFault);
7service.GetBook();
8}
クラス オブジェクトのloadWSDL() メソッドを通じてリモート WebService を直接呼び出し、クラス オブジェクトに関連する処理関数を動的に指定して、ラベルと同様にリモート WebService メソッドを呼び出すだけです。
1 内部関数onResult(evt:ResultEvent):void
2{
3Alert.show(evt.result.Id);
4}
5
6内部関数onFault(evt:FaultEvent):void
7 {
8Alert.show(evt.fault.faultDetail.toString());
9}
上記で、リモート WebService メソッド呼び出しにプログラムでアクセスするための WebService クラスの使用が完了しました。
WebService によって返される DataTable などの責任のある型と、Flex クライアントでそれらを解析する方法を見てみましょう。まず、次のように WebService メソッドを定義します:
1[WebMethod(Description="このメソッドは DataTable 型のデータを返します")]
2publicDataTableGetDataTable()
3{
4DataTabledt=newDataTable("書籍") ;
5dt.Columns.Add("ID",typeof(int));
6dt.Columns.Add("名前",typeof(string));
7dt.Columns.Add("作成者",typeof( string) );
8dt.Columns.Add("価格",typeof(double));
9
10DataRowdr=dt.NewRow();
11dr["Id"]=1;
12dr["名前"]= " フレックス ゲーム開発";
13dr["著者"]="Zhang San";
14dr["価格"]=54.85;
15dt.Rows.Add(dr);
16
17dr=dt.NewRow();
18dr["Id"]=2;
19dr["Name"]=""Flash ゲーム開発"";
20dr["Author"]="李思";
21dr["Price"]=65.50;
22dt.Rows.Add(dr);
23
24returndt;
25}
Flex クライアントの WebService を通じてアクセスすることもできます。以下は、
1
3
4
5
WebService はWebService を削除した後は、WebService が提供するリモート メソッドを呼び出すだけです。以下のように:
1 内部関数onTable(): void
2{
3myService.addEventListener(ResultEvent.RESULT,onSuccess);
4myService.addEventListener(FaultEvent.FAULT,onFault);
5myService.GetDataTable . send();
6}
7
8internalfunctiononSuccess(evt:ResultEvent):void
9{
10//bookGrid.dataProvider=this.myService.GetDataTable.lastResult.Tables.Books.Rows;
11}
12
13internalfunctiononFault (evt:FaultEvent):void
14{
15Alert.show("WebService メソッドの呼び出しに失敗しました、詳細: "+evt.fault.faultDetail.toString());
16
17}
戻り値をバインドしますWebService Flex の DataGrid コンポーネントでは、mxml の関連コードは次のとおりです:
1
2
4
5
6
7
8
9
10
11
12
13
14
さらに、DataGrid の dataProvider プロパティを通じて DataGrid コンポーネントのデータ ソースをバインドします。バインド式のヘルプに加えて、リモート メソッドを正常に呼び出すハンドラー関数で DataGrid のデータ ソースを指定することもできます。上記のコードのコメントされたコード部分を参照してください。 {this.myService.GetDataTable.lastResult.Tables.Books.Rows} は、リモート WebService メソッド GetDataTable() によって返された結果 (DataTable) のすべての行が、DataGrid コンポーネントにバインドするデータ ソースとして使用されることを意味します。ここで Books はデータ ソースの名前 DataTable.、
DataSet、DataTable は、ジェネリック コレクションと比較してパフォーマンスに大きな差があり、複雑なシリアル化と逆シリアル化のプロセスも大きく影響します。.net 2.0 がリリースされて以来、私は常にジェネリックを使用してきました。ビッグデータを渡すため。さて、次に、Flex の WebService メソッドによって返される汎用コレクション データを処理する方法を紹介します。次の WebService メソッド定義があります:
1 [WebMethod(Description="このメソッドは汎用コレクションを返します")]
2publicList
3{
4returnnewList
5{
6newBook
7{
8Id=1,
9Name=""Flex Game Development"",
10Author="Zhang San",
11Price=54.85
12},
13newBook
14{
15Id=1,
16Name=""Flash Game Development"",
17Author="李思",
18Price=65.50
19}
20};
21}
DataSet 型や DataTable 型と比較して、私は個人的に List<> を使用します。 return data のほうが扱いやすいと思います。
これは、一般的な組み合わせ (List<>) の形式で返されるデータ形式であり、DataTable の戻り結果と比較して、より簡潔で明確です。そうは言っても、この戻り値を取得して Flex でこの値を処理するにはどうすればよいでしょうか?実際、上の図を注意深く見てみると、「ArrayOfBook」が見つかります。 ? ? ?これは何ですか?クライアントはこの戻り値を配列の形式で取得できるのではないでしょうか。この詳細をさらに理解するには、戻り値の具体的な構造をさらに深く理解する必要があります。Flex Builder のデバッグ環境を通じて、次の情報を取得できます:
それがはっきりわかりますか? BookList メソッドの lastResult 構造セットの下に 2 つのオブジェクトがあり、ノードをクリックすると、List
1
2
3
4
5< mx:DataGridColumnheaderText="本のタイトル" dataField="名前"/>
6
7
8
9
10
11
12
13
ここでは WebService のデータ アクセスについて紹介します。私の個人的な能力が限られているため、記事に不備があれば皆さんに修正していただければ幸いです。良い提案があれば、それを提案して、みんなで議論し、学び、一緒に進歩していきましょう。 !

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C言語では、以下などのエスケープシーケンスを通じて特殊文字が処理されます。\ nはラインブレークを表します。 \ tはタブ文字を意味します。 ESACEシーケンスまたは文字定数を使用して、Char C = '\ n'などの特殊文字を表します。バックスラッシュは2回逃げる必要があることに注意してください。さまざまなプラットフォームとコンパイラが異なるエスケープシーケンスを持っている場合があります。ドキュメントを参照してください。

Cでは、文字列でCharタイプが使用されます。1。単一の文字を保存します。 2。配列を使用して文字列を表し、ヌルターミネーターで終了します。 3。文字列操作関数を介して動作します。 4.キーボードから文字列を読み取りまたは出力します。

c言語のシンボルの使用方法は、算術、割り当て、条件、ロジック、ビット演算子などをカバーします。算術演算子は基本的な数学的操作に使用されます。割り当てと追加、下位、乗算、除算の割り当てには、条件操作に使用されます。ポインター、ファイル終了マーカー、および非数値値。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

C言語では、charとwchar_tの主な違いは文字エンコードです。CharはASCIIを使用するか、ASCIIを拡張し、WCHAR_TはUnicodeを使用します。 Charは1〜2バイトを占め、WCHAR_Tは2〜4バイトを占有します。 charは英語のテキストに適しており、wchar_tは多言語テキストに適しています。 CHARは広くサポートされており、WCHAR_TはコンパイラとオペレーティングシステムがUnicodeをサポートするかどうかに依存します。 CHARの文字範囲は限られており、WCHAR_Tの文字範囲が大きく、特別な機能が算術演算に使用されます。

C言語では、charタイプの変換は、キャスト:キャスト文字を使用することにより、別のタイプに直接変換できます。自動タイプ変換:あるタイプのデータが別のタイプの値に対応できる場合、コンパイラは自動的に変換します。

Char Arrayは文字シーケンスをC言語で保存し、char array_name [size]として宣言されます。アクセス要素はサブスクリプト演算子に渡され、要素は文字列のエンドポイントを表すnullターミネーター「\ 0」で終了します。 C言語は、strlen()、strcpy()、strcat()、strcmp()など、さまざまな文字列操作関数を提供します。

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。
