問題タブ [2-way-object-databinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3344 参照

apache-flex - Flex 4 COLLECTION_CHANGE イベントが発生しない

現在、ArrayCollection オブジェクトの双方向バインディングを実現しようとしています。ただし、COLLECTION_CHANGE イベントは発生していません。

アプリ.mxml

FloorplanGrid.as

Booths変数を使用して双方向バインディングを実現しようとしています。ただし、App.mxml の Booths 変数に 2 つの新しい項目を追加しても、COLLECTION_CHANGE イベントは発生しません。

0 投票する
5 に答える
11048 参照

c# - ASP.NETでの双方向データバインディング

オブジェクトがあるとしましょう

次のようなページの2つのテキストボックスにプロパティをバインドしたいと思います。

次に、これをコードビハインドで記述します

また、テキストボックスに値を入力すると、PostBack後にページがリロードされたときに、EntityObjectのプロパティにこれらの値が含まれると思いますが、プロパティは常にnullです。

0 投票する
1 に答える
282 参照

c# - コンボボックスでのデータバインディング

参考: コンボボックスのC#データバインディング

私も似たような状況です。テキスト ボックス、コンボ ボックス、チェック ボックスが少ないフォームがあります。最初に、「変更された」イベント (text_changed、selected_index_changed など) をキャッチし、UI データをバッキング オブジェクトと同期するために使用します。Databinding について学び、すべての UI 要素をバッキング オブジェクトにバインドしました。

問題: UI の状態に基づいて、バッキング オブジェクトを使用してコンテンツに保存する [送信] ボタンを有効または無効にしていました。しかし現在、DataBinding により、バッキング オブジェクトのプロパティは、それにバインドされたコントロールが適切にフォーカスを失っていない限り変更されません。

質問 この問題を解決する標準的な方法はありますか? それとも、「変更された」イベントをキャッチしてバッキングオブジェクトの値を設定する必要がありますか?

また、フォームをフォールト トレラントにするために、バッキング オブジェクトを N 秒ごとに保存します。しかし、DataBinding を使用すると (フォーカスされているコントロールがまだその値をバッキング オブジェクトに設定していない場合)、間違ったデータを保存することになります。

私が試したこと Evey N seconds call this.validate() -> これは、実際にはフォーカス時にコントロールに古いデータを入力するため、機能しません。

- - - ノート - - -

バッキング オブジェクトは INotifyPropertyChanged インターフェイスを実装します。

これは、(デザイナーではなく)コードでバインドする方法です。

Binding binding = new Binding("checked", solution, "InternalFlag"); checkBoxFlag.DataBindings.Add(バインディング);

0 投票する
2 に答える
1697 参照

c# - databind bind()関数はどのクラスに属しますか?

一方向のdatabindEval関数はクラスに属し、式が評価されるオブジェクト参照を解決するメソッドを使用してメソッドを呼び出すメソッドをDataBinder介してページからアクセスできます。TemplateControl.EvalDataBinder.EvalGetDataItem

OK ...では、双方向のデータバインドBind関数はどのように機能しますか?どのクラスに属していますか?

0 投票する
2 に答える
950 参照

apache-flex - mx:DateField とフォーム内のバインド

複数の FormItems を持つフォームがあり、そのうちの 1 つに mx:DateField が含まれています。DateField 値をバインドする方法がわかりません。私は次のことを試しましたが、どれも機能しません:

最終的に、日付を文字列としてデータベースに保存/取得しようとしています。ヘルプやベストプラクティスをいただければ幸いです。ありがとうございます。

0 投票する
2 に答える
5202 参照

c# - WPFテキストボックスをデータグリッドの現在選択されている行にバインドする

調べてみましたが、探しているものがまったく見つかりません。私はMVVM環境を持っています。View モデルには、データベース接続/クエリからのデータから利用できる Datatable があります。「TheTable.DefaultView」に基づく「DataView」としてプロパティ (getter/setter) を公開しました。

データビューにバインドするウィンドウにデータグリッドがあります...問題ありません。

上記の "SelectedItem" についても、(getter/setter) を介して ViewModel で公開されているプロパティから取得されます。

さて、私の問題です。データ グリッド内のレコードのリストを下にスクロールすると、グリッド リストだけで提供されるデータよりも多くのデータを表示する他のテキスト ボックス コントロールが表示されます。「現在の行」のデータを編集できるようにしたいので、考えられる限り多くの設定をしたテキストボックスを用意しましたが、まだ何かがおかしいです。

スクロールしてデータの編集モードにあり、現在の行に関連付けられているテキストボックスの値を変更し、この値がグリッドに表示されている列の1つである場合、データグリッド自体は変更された値を表示しません. ただし、スクロールを続けて同じレコードに戻ると、テキストボックスの値は変更された値を示します。

したがって、特定の行の個々の列が変更され、グリッド自体も更新されたときに、グリッド データ ソースも更新されたと見なされるように強制するにはどうすればよいでしょうか。ありがとう...

0 投票する
3 に答える
6310 参照

asp.net - DropDownListをFormViewの2つのSqlDataSourceにカスケードするダブルデータバインディング

それぞれ2つの別々のSqlDataSourceにバインドしようとしている2つのカスケードドロップダウンリストがあります。

これらのドロップダウンリストは、FormViewのEditItemTemplateにあります。EditItemTemplate内には、部門とジョブ名を設定する2つのsqldatasourceコントロールが存在します。DeptIDとJobIDは、これらのテーブルの主キーです。これにより、部門と職務の間に「カスケード効果」が生まれます。部門を選択すると、その部門に関連付けられているジョブのみが表示されます。

この作品は正常に動作しています。

フォームビューの外部には、更新ステートメントですべての情報をEmployeeテーブルにバインドするSqlDataSourceが存在します。上記のFormViewから省略されている場合でも、このSqlDataSourceに他のすべての情報を残しています。

バインドする方法がわからないのは、部門とジョブだけです。他のすべてが機能しています。DropDownListコントロールで次のコードを使用してみました...

...しかし、これらはエラーになります。

概要

ユーザーが[編集]をクリックすると、メインのsqlDSProfileデータソースから選択した値を取得するために2つのドロップダウンボックスの値が必要になりますが、更新可能である必要があります。アソシエイトが属するジョブを更新してバインドできるようになりましたが、ドロップダウンリストがカスケードされるため、部門を変更しようとすると、AutoPostBackがsqlDSProfile-CurrentJobIDとddlJobsの間のバインドを解除します。

アップデート

selectステートメントにとを追加し、DropDownListコントロールにBind()ステートメントを追加しましtblEmployee.CurrentDeptIDた。tblEmployee.CurrentJobID

これで、2つのDropDownListに、Employeeテーブルから取得した正確な情報が入力され、従業員が属する部門とジョブが示されます。

2つのDropDownListには、FormView内の2つのSqlDataSourceも入力され、部門を変更したり、ジョブを変更したりするためのオプションが提供されます。

ジョブを変更すると、それが機能し、従業員のジョブが更新されます。

学科を変えると壊れてDataBinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

完了に近い

ddlJobsからデータバインディングを削除し、バックグラウンドでコーディングしました。

残っているのは、ddlDepartmentsが変更されたときのコードを作成することだけです。

擬似コード...

とても近い!

再度更新

これは、これを緩くバインドするために私が開発したコードです。page_loadで、sqlDSProfileからCurrentJobIDの内容を取得し、その値がddlJobsに存在するかどうかを確認しようとしています。もしそうなら、ddlJobs.SelectedValue=をそのCurrentJobIDに設定したいと思います。そうでない場合は、selectedindexを0に設定します。これは、「1つ選択してください」などのメッセージです。

dbnull.valueをチェックしている行でnull参照例外が返されます

0 投票する
4 に答える
31955 参照

c# - WPF Datagrids で「双方向バインディングにはパスまたは XPath が必要です」という例外を修正するにはどうすればよいですか?

この質問の背景/コンテキスト: WPF デスクトップ アプリケーションがあります。LINQ to SQL を使用して SQL データベースに接続し、データを WPF Datagrids に表示します。かなりうまく機能していましたが、LINQ は非常に遅くなる可能性があるため、パフォーマンスに問題がありました。そのため、ロジックと UI コントロールを LINQ データベース コンテキストからできるだけ離し、代わりにローカル変数にロードしています。パフォーマンスを大幅に向上させる LINQ オブジェクト。

問題: Datagrid をテストしていると、ある Datagridの特定の (整数) 列の値を編集しようとすると、「双方向バインディングにはパスまたは XPath が必要です」という新しい例外が発生します。正常に動作しています。なぜこれを取得しているのか、どうすればよいのかわかりません。

そのため、datagrid.datacontext が LINQ エンティティ アソシエーションに設定されている場合は機能しましたが、プレーン オブジェクトのリストに設定されている場合にのみほとんど機能します。リストを ObservableCollection に変更しようとしましたが、明らかな効果はありませんでした。

ここや他のサイトで関連するさまざまな質問を見てきましたが、役立つと思われるものは何も見当たりません.

現在私は持っています:

...

コードによってバインドされています。

これは次のように定義されます。

バインドされたメンバーは次のとおりです。

これを入力した直後に、非常に簡単な修正を見つけました。これは、サイトが 8 時間の遅延後に許可したときに投稿します。

0 投票する
2 に答える
1252 参照

wpf - List への DataGrid バインディング

WPF DataGrid コントロールと、基になる type のオブジェクトとの間の最適な中間層に関する提案が必要List<int?>です。DataGrid は get/set プロパティを使用してオブジェクトのコレクションにバインドする必要があるため、2 つを直接簡単に接続することはできず、DataGrid によって見つからない null 許容 int オブジェクトの 'Value' プロパティに問題がありました。列バインディング ソース。

元のデータ ソースはそのままにしておくList<int?>必要があります。双方向のデータ バインディングが元のList<int?>ソースに保持されるように、DataGrid が提供する自動追加/削除/編集機能を活用しようとしています。

提案をありがとう。

0 投票する
1 に答える
962 参照

c# - TwoWay データ バインディング プロキシを作成する方法は?

私は次のクラスを持っています...

クラスを使用した私のコードComparisonBinderは次のとおりです。

コントロールのバインドされたプロパティの値を生成する式を使用して、多くのコントロールを同じプロパティにバインドできます。コントロールからオブジェクトまで美しく機能します。(このクラスとこの質問の使用について詳しく知りたい場合)

今、私は逆の方向に進む必要があります。オブジェクトを更新すると (get 式の結果が変更されます)、バインドされたコントロールを更新する必要があります。を実装してみましたINotifyPropertyChangedが、違いはありませんでした。

奇妙なことに、コントロールDataSourceUpdateModeを に設定するとOnPropertyChanged、チェックしたラジオを変更できなくなります。