問題タブ [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 投票する
1 に答える
4653 参照

c# - カスタム テンプレート化された asp.net コントロールの双方向データ バインディング

この質問はもともと、双方向バインディングをまったく機能させることに関するものでしたが、具体的な回答がなかったり、途中で進行したりするため、更新しています-編集履歴を確認できますが、これがより良いと考えました明快さ。

以下のコード リストでは、1 つのオブジェクトをテンプレート化されたコントロールに双方向でデータ バインドできます。この例を可能な限り単純な方法で拡張して、最もルートのオブジェクトの複雑な型のプロパティに対して、同様に双方向のデータバインディングが有効なテンプレート化されたコントロールをネストできるようにしたいと思います。たとえば、SampleFormDataにはプロパティがありますList<string> Items。最もルートのテンプレート (このコード リストから) 内でこのリストにバインドできるようにしたいと思います。また、おそらく、挿入、削除、再バインド入力のコマンドを使用して、テキスト ボックスの編集可能なリストに文字列データを表示します。 -changes (バインドされたオブジェクトの List プロパティに戻ります)。また、これが複合型 (SampleFormChildData文字列ではなく ) のリストである場合、新しい埋め込みSampleSpecificEntryFormリピーターのように、リストの各項目にバインドして、リスト内で使用できます。作成者が選択した場合は、葉のような単純なプロパティに至るまで同様です。UI フィールドは自動生成する必要はなく、バインドに使用できます。

注: のケースList<string>は特別です。組み込みバインディングでさえ文字列を DataItem として直接処理できないためです。リスト内の項目として直接文字列にバインドすることは必須ではありませんが、確かに価値があります。

これは a とは異なります。これはFormView、アイテムのリストの 1 つにバインドすることを期待するように構築されておらず、viewstate またはどこにでも永続化されている単一のアイテムにのみバインドするように構築されているためです。FormView とは異なり、これには FormView の EditTemplate に似た単一のデフォルト テンプレートしかありません。同様に、コレクションのようなプロパティへのバインディングも、編集という 1 つのビューのみを持ちます。行の選択と編集はありません。すべてがいつでも編集可能です。目的は、双方向のバインドされたフォームを簡単に作成できるようにすることです。

私には、2 種類のバインディングが必要なように思えます。 SingleEntityBindingCollectionBinding。 以下のコード例のようにSingleEntityBinding、単一のオブジェクト インスタンスをデータソースとして ( によってプロトタイプ化されたようにSampleSpecificEntryForm)取りますが、属性を使用してそのCollectionBinding親にバインドできます。いずれかのタイプのネストは、どちらのタイプでもサポートされる必要があります。バッキングオブジェクトのデータに対する挿入/変更/削除タイプの操作などのリスト操作は、フォーム作成者の責任です。ただし、そのようなメカニズムは実装が比較的簡単です。SingleEntityBindingDataSourceID="EntryForm1" DataMember="Items"DataList1

ここにいくつかのコードがあります。誰かの役に立てば幸いです。この設定された目標に対する最良の提案には 200 ポイントが与えられます...

ASP.NET ページを使用すると、次のようになります。

Default2.aspx.cs:

リストコンポーネントを次のようにネストできるようにするために、IDataSourceも実装しました( 内):

これをカスケード方式で機能させる方法についての考えは素晴らしいでしょう (たとえば、Items リスト プロパティについて)。ここでの課題の 1 つは、Bind() がデータバインドされたオブジェクト自体 (この場合は文字列) を参照できず、そのアイテムのプロパティを参照できないことです。これにより、リストへのバインドが厄介になります。

助けてくれてありがとう!


道中の発見

IDataItemContainer を実装しました。これで直るだろうと期待していましたが、違います。目立った変化なし。 おっと、間違ったクラスに実装しました。現在はバインドされていますが、値はポストバック時にバインドされたオブジェクトに再バインドされていません。うーん...

この記事が示唆するように、Page.GetDataItem() が例外のソースです。この例外は、ページの _dataBindingContext が null または空の場合にスローされます。この記事ではこれについて説明していますが、Page の _dataBindingContext が設定されていることを確認する方法については述べていません。探し続けます。

MSDN のドキュメントにあるように、DataBoundControl は DataBind() をオーバーライドするのではなく、PerformDataBinding を実装する必要があります。私はそうして、双方向バインディングの作業を行いました。このコードは必要ですか、それとも組み込みのものを使用する必要がありますか?

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

silverlight - 子ウィンドウからエンティティを追加すると、エンティティをアタッチできないというエラーが発生します....なぜですか?

注文支払いのリストボックスがあるSilverlightの注文詳細フォームがあります。注文の支払いは、周囲の注文以外の独自のドメインデータソースにバインドされます。新しい注文の支払いを追加するためにChildWindowコントロールをポップアップするボタンがあります。注文支払いには、金額と支払い方法が関連付けられています。

フォームは正常に読み込まれ、データフォームのすべての支払い方法が金額のテキストボックスとともにドロップダウンに表示されます。注文の支払いを保存して注文の詳細に添付しようとすると、「別のエンティティに既に接続されているため、エンティティを接続できません」という恐ろしいエラーが発生します。

[注文支払いの追加]子ウィンドウのXAMLは次のとおりです。

[注文支払いの追加]画面の背後にあるコードは次のとおりです。

最後に、新しい注文の支払いを注文の詳細画面に再添付しようとするコードは次のとおりです。

Order Paymentには、別のデータコンテキストにバインドされたプロパティがあるため、この問題が発生していますか?子オブジェクトを保存するためにRIAサービスからオブジェクトをロードする必要がある場合、この方法で子オブジェクトを追加することもできますか?どういうわけか、ドメインデータソースを注文の詳細ページから子コントロールに渡して、1つのデータソースを作成する必要がありますか?または、新しいオブジェクトを取得するために、コードでクローンを作成するように戻す必要がありますか?

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

asp.net - .Net ObjectDataSource エラー: オブジェクトがターゲット タイプと一致しません

Insert メソッドが呼び出されたときに「オブジェクトがターゲットの型と一致しません」というエラーが発生しているページに ObjectDataSource があります。このメッセージをグーグルで調べたところ、このメッセージは欺瞞的であり、ObjectDataSource がメソッドを呼び出そうとしているオブジェクトで実際に null 参照エラーが発生していると思いますが、その理由を理解できれば大変です。

Insert 時に呼び出される Type は AddCommentPresenter です。メソッド AddComment は静的ではありません。これを静的に変更すると、エラーは発生せず、メソッドは問題なく見つかります。静的でない場合、エラーが発生します。そのため、根本的な問題は、AddComment メソッドが呼び出されたときに、Presenter クラスの有効なインスタンスを何らかの形で取得していないことにあると思います。

私の AddCommentPresenter クラスには、パラメーターなしのコンストラクターがありません。通常はエラーになります。これを回避するために、ページのコード ビハインドで ObjectCreating イベントをオーバーライドし、Presenter クラスのインスタンスを割り当てています。

protected void dsAddComment_ObjectCreating(object sender, ObjectDataSourceEventArgs e) { e.ObjectInstance = presenter; }

ObjectCreating メソッドをステップ実行できます。これは、e.ObjectInstance プロパティに渡される有効な null 以外の Presenter インスタンスです。

私の AddComment メソッドには正しい署名があります。

aspx ページの型名のスペルミスなど、明らかなことも確認しましたが、すべて正しいです。

誰にもアイデアはありますか?ObjectDataSource クラスを扱うのは非常に難しいと言わざるを得ません....

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

android - Android は、UI からオブジェクトへの値の入力と設定、およびその逆

私は、アンケートを編集するオプションも提供する必要がある、アンケートを取るための商用 Android アプリを作成しています。明示的なロジックを記述せずに UI フィールドをデータベースにリンクするための最良の方法は何ですか。

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

c# - ネストされたオブジェクトのフィールドへのc#バインディング

WinFormsアプリのコントロールをデータバインディングを使用してネストされたオブジェクトにバインドする方法の簡単で具体的な説明が見つからないようです。例えば:

ここで、2つのテキストボックスを持つフォームを想像してください。1つ目はName用、2つ目はInner.SomeValue用です。Nameに対してバインディングを機能させることは簡単にできますが、Inner.SomeValueは不安定です。オブジェクトにデータを入力してからバインディングを設定すると、テキストボックスにInner.SomeValueが表示されますが、編集できません。Innerを初期化せずに新しいオブジェクトから開始すると、Inner.SomeValueにデータを固定できないようです。

私はMSDN全体、StackOverflow全体、およびさまざまなキーワードを使用した数十の検索をチェックしました。誰もがデータベースまたはDataGridへのバインドについて話したいと思っており、ほとんどの例はXAMLで記述されています。

更新:私はマークの完全なテストハーネスを試しましたが、部分的に成功しました。「すべての変化」を打ったら!ボタンをクリックすると、内側のオブジェクトに書き戻すことができるようです。ただし、MyObject.Inner nullから開始すると、内部オブジェクトを作成する方法がわかりません。今のところ、内部参照が常に有効なオブジェクトに設定されていることを確認するだけで、この問題を回避できると思います。それでも、何かが足りないような気がして仕方がありません:)

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

wpf - TwoWayモードを使用してListviewSelectedItemをテキストボックスにバインドするにはどうすればよいですか?

私はWPFに非常に慣れておらず、作業するアプリケーションに含めたいいくつかのことをテストしています。ScottGuthrieとJonSkeetという名前の2行のListView(テキストボックスにバインドされています)があります。ListViewで「ScottGuthrie」を選択して、TextBoxに入力しようとしています。テキストを編集してタブをオフにし、ListViewを更新できるようにしたい。

編集:それは実際には質問に何も追加しなかったので、私はコードを削除しました。

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

asp.net - ASP.NET の双方向 (双方向) データバインディングとは何ですか?

ASP.NET の双方向データ バインディングとは。Bind()双方向のデータバインディングアプローチだと聞きました。

databinder.evalやとどう違うのEval()

双方向データバインドの利点は何ですか?また、どのような状況で、双方向データバインドを使用してBind()代わりに使用する必要がありdatabinder.eval()ますか?

詳しく相談してください。

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

wpf - Wpf treeview selectedItem データバインディング

ツリービューにバインドされたオブジェクトを持っているビューがあります。オブジェクトには (さまざまな種類の) コレクションが多数あるため、階層型テンプレートを CompositeCollection と共に使用してツリービューに表示しています。

次に、ツリービューの selectedItem にバインドされたテキスト ボックスを取得しました。ここでは、selectedItem を XML にシリアル化し、編集用にテキスト ボックスに表示しています。

これまでのところすべて順調です。ただし、私が抱えている大きな問題は、読み取り専用であるため、ツリービューの SelectedItem プロパティで双方向データバインディングを使用できないことです。

ツリービューにバインドされているオブジェクトとテキスト ボックスの編集を同期させるにはどうすればよいですか?

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

wpf - この場合、DataBinding が逆に機能しないのはなぜですか?

最初のものは望ましい影響を与えます-テキストボックスのテキストを変更すると、ラベルの内容が変更されますが、2番目のものは変更されません。なんで?

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

wpf - DataBindingの問題-DataTemplate/ViewModel / ICollectionView

最初にこれをPRISM4フォーラムに投稿しましたが、このフォーラムも試してみるべきだという提案がありました:)私はWPF4を使用しています...

私はPRISM4を実行していますが、データバインディングを機能させるのに苦労しています。私はMVVMパターンに従っていて、最初にRDBMSからデータをロードし、それをICollectionViewでラップするビューモデルを持っています。これは完全に機能し、データはバインドされたDatGridに表示されますが、以下で宣言されたDataGridに表示されるデータに加えられた変更を永続化します。

ビューモデルは、読み取り/書き込みプロパティ「Results」を介してICollectionViewを公開します。これは、ご覧のとおり、「TwoWay」のバインディングモードを備えています。チェックボックスの状態に加えられた変更を保持するにはこれで十分だと思いましたが、そうではありません:(これを実現するためにいくつかの方法を試しましたが、チェックボックスの状態はビューモデルに伝播されません。 ICommandオブジェクトである「PlotClicked」メソッドの呼び出しをインターセプトしましたが、渡される引数には変更されていない「Plot」属性があります。これは、列ヘッダーの1つをクリックしてビューを並べ替えると、特に明白になります。チェックされた行はチェックボックスをオフにすると、データベースから取得したときのチェックボックスのデフォルトの状態になります。

私はここで何が間違っているのですか?

事前に感謝します-私は本当にここで立ち往生しています:(/ Peter

..。

私は私に指摘された提案を試してみました。これは私がやったことです:

  1. ビューモデルで、ResultプロパティをICollectionViewからOCに変更しました

    public ObservableCollection Results {get; セットする; }

  2. ビューを構成するUserControl用に次のテンプレートリソースを追加しました

  3. 「列」セクションのDataGridに次のコードを追加しました

    /li>

これらの変更を行った後、上記の(2)のIsChecked = "{Binding言及...でUpdateSourceTriggerのさまざまな設定を試しましたが、効果はありませんでした。チェックボックスに加えた変更は、ビューモデルのObservableCollectionに転送されません。 。

繰り返しになりますが、ここで私を助けてくれてありがとう!

*更新* 今私は本当に不気味な何かを経験しました:(これは私がしたことです:

これは、DataGridのチェックボックス列をクリックして「プロットプロパティ」をtrueに設定できないという意味では機能しませんでした。今、私は次のことをしました:

あなたが尋ねるかもしれない結果?それは動作し、「プロット」は正しく設定されています!さて、これは変だと思いました!!! だから私がしたことは次のとおりでした(単にプライベート変数とget / setコードをコメントアウトする):

さて、結果はどうですか?できます!!!???私はびっくりしました...つまり、最初と最後の違いは何ですか???? 私はこれについて非常にぎこちなく感じます-私はここで舞台裏で何が起こっているのか知りたいという意味です...:(