問題タブ [dynamic-usercontrols]
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.
c# - パスを指定してユーザー コントロールのタイプを取得する方法
typeof(MyUserControl) のように、ユーザー コントロール ~/usercontrols/MyUserControl.ascx へのパスを型に変換する方法はありますか?
asp.net - FindControlは、動的に追加されたUserControlを見つけられません
使用可能なインデックスに応じて、ページが特定のコントロールをロードするプロジェクトに取り組んでいます。ロードは、メソッドPopulateSearchFieldが呼び出されるページロードで発生します。
このメソッド内で、すべてのUserControlは、次を使用してページに追加されます。Page.LoadControl( "path");
ページの読み込みと必要なすべてのコントロールがページにあります。私の問題は、ユーザーが[検索]ボタンをクリックするとイベントがトリガーされ、それらのコントロールへのユーザー入力に基づいてクエリが作成されることです。残念ながら、このメソッドはページ上のコントロールを見つけることができないため、適切なクエリを生成できません。
一時的なControlCollection変数を使用すると、ページ上のコントロールの数が4から10の範囲であるはずなのに、3であることがわかりました。コレクション内のこれらの3つのコントロールは、ページ上の静的ラベルとボタンです。
このソリューションはフレームワーク1.1で機能していたため、コードに問題があるのか、それともページサイクルの問題なのかはわかりません。ええ、私はこれがそうするのに最善のことではないことを知っています、しかし彼らはそれをこのようにしたので、私はそれを機能させなければなりません。
問題の原因が移行であるかどうかはわかりません。
どうもありがとう、デビッド!
c# - プロジェクト コントロールの仮想パスを取得する
私はC#に取り組んでいます。私のasp.netプロジェクトには多くのコントロールがあります。コントロール パスをデータベースに保存したいと考えています。コントロール名の 1 つが MyUserControl.ascx だとします。そのパスは~/usercontrols/MyUserControl.ascxです。このパスをデータベースに保存したいと思います。データベースに情報を保存する方法は知っていますが、問題はパスを取得する方法がわからないことです。ボタンを追加し、ボタンをクリックしてプロジェクトのルート フォルダーを表示するとします。そこから、コントロールまたはページを選択してパスを取得します。パスを取得するには?
- ボタンをクリックしてルート フォルダを開きます。
- 選択したコントロールは、テキスト ボックスでそのコントロールのパスを取得します
wpf - MVVMLightToolkitを使用してUserControlを動的にロードする
このサイトを検索したところ
、MVVMパターンでwpfユーザーコントロールを読み込む方法が2つ見つかりました。
MVVM-Light:UserControlをウィンドウにロード
しかし、それでも私は私の問題とこのリンクへの答えを見つけることができません
MVVM-ライトロケーターパターンと再利用可能なUserControl
私は理解していませんでした....だからここに私は私のような他の人が苦労しているのを助けるかもしれない私の問題を述べています......
私MainWindow
は2つの部分からなるaを持っています。1つはTreeView
(a
UserControl
)を持ち、もう1つはWindowsエクスプローラーと同じように異なるユーザーコントロール(DisplayPanelという名前)を表示します。
右側の表示パネルには、ツリービューのクリックノードにさまざまなユーザーコントロールが表示されます。
私TreeView
はそれ自体がユーザーコントロールです。
を使用してこの複合UIを機能させるにはどうすればよいですかMVVM
。また、MVVM
lightToolkitの使用を計画しています。これは助けることができる何かを持っていますか...
例は素晴らしいでしょう
ありがとう... :)
編集
私のTreeViewは、ツリービューの選択されたアイテムをキャッチUserControl
する依存関係プロパティを作成しました。UserControl
これにより、この依存関係プロパティを使用して、「MainView」ContentControl
バインディングに必要なビューを設定できます。コメントでアドバイスされたとおりです。 。すべてが今までです
問題は、選択したアイテムに含まれるデータを表示したいのですが、UserControlsのDataContext(右側に表示されます)を選択したアイテムに設定できないため、ビューモデルを使用できなくなります。コマンドおよびその他の操作のそれぞれのユーザーコントロール
私もこれを解決しようとしました....TreeViewUserControlビューモデルのメディエーター(メッセンジャー)を使用して、Usercontrol(表示する必要があるもの)のビューモデルにメッセージを送信しました。ツリービューでアイテムが選択されるたびにメッセージが渡されます。メッセージには選択したノードが含まれます。データを表示できるように、UserControlのデータコンテキストをビューモデルに設定したことを忘れました
しかし、このアプローチを使用すると、問題は、あるタイプのノードを初めてクリックしたときにデータが入力されないが、同じタイプのノードをもう一度クリックするとデータが入力されることです。何が起こっているのかというとUserControl
、ツリーアイテムが初めてクリックされ、メディエーターがメッセージを送信したときに、オブジェクトが使用可能になります。そのため、メディエーターはメッセージをuserControlビューモデルに渡すことができません。
私はこれをさらに解決する考えがまったくありません....ユーザーコントロールを正しく表示するか、他のことをする必要がある場合は私の方法です....完全に混乱しています.....
c# - WinForm UserControl基本クラスを拡張する正しいアーキテクチャ?
非常によく似た多数の UserControls があります。彼らは多くの共通の行動を共有しています。私は共通のものを持つ基本クラスを使用しており、必要に応じてクラスを特殊化しています。
など...
これは、BaseControl に含まれる子コントロールのレイアウトの挿入または変更を開始する必要があるまでは、かなりうまく機能します。たとえば、RedControl は、ベース コントロールの特定のパネルに Button を追加する必要があります。それ以外の場合は、他の基本子コントロールのサイズまたはレイアウトを変更する必要があります。
次のコードを試したところ、実行時にボタンが表示されませんでした...
addButtonToBase() を仮想化し、BaseControl の InitalizeComponent() で生成されたコードに手動で追加すると、ボタンをbaseSplitContainer の子として表示できます。BaseControl のレイアウトはまだ続いており、C#.Net のコンストラクターで仮想関数を呼び出すことが許可されています....
したがって、機能しても、良い解決策ではありません。1 つには、VS デザイナーで BaseControl を編集すると、IntializeComponent 内の addBaseControl() の呼び出しが削除されます。別の場合、コンストラクターでの仮想関数の呼び出しは危険に感じます。
基本コントロールのレイアウトを派生コントロールで再び発生させる必要があると思います...試してみましたが、間違っていたか、機能しません...
ところではい、私はWPFがこれに適していることを知っています。他のシステムの制約により使用できません。
javascript - ascx コントロールで評価されない動的に追加された JavaScript
設計時にリテラルが配置された ascx コントロールがあります。実行時に Page_Load で、リテラルのテキスト プロパティを、データベースから取得した JavaScript に設定します。ただし、javascript コードは評価されていないようです。スクリプトを評価するにはどうすればよいですか?
.ascx:
ascx.cs:
visual-studio - UpdatePanelのカスタムユーザーコントロールコンテンツは、ボタンクリックポストバックで消えます
default.aspxにあるプレースホルダーにascxカスタムユーザーコントロールを追加/ロードすることでUpdatePanelコンテンツを更新する次の関数があります。
マスターページUpdatePanel:
別のカスタムascxコントロールであるナビゲーションコントロールからNavigationTab_Clickを呼び出しています。ボタンをクリックすると、ラベルにテキストが再割り当てされるだけで、それぞれに動的に読み込まれるctrlコントロールオブジェクトにボタンとラベルがあります。
そして、ascx制御パスを取得するためだけに、マスターページに次のコードがあります。
これまでのところ、すべてが正常に機能しています。NavigationTab_Click関数を呼び出してctrlオブジェクトを読み込んだ後、プレースホルダーにctrlが表示され、ボタンとラベルが表示されますが、このボタンをクリックすると、ラベルがテキストに再割り当てされますが、代わりにCtrlコントロールのコンテンツ全体が消えます。助けてください。
asp.net - 2 つの ASP.NET UserControls をオンデマンドで読み込むにはどうすればよいですか?
オンデマンドで 2 つのユーザー コントロールをロードしたい。
aspx.cs
最初のボタンをクリックして最初のユーザー コントロールを読み込みます - これは正常に動作しますが、別のボタンをクリックして 2 番目の UserControl を読み込むと、最初の UserControl が消えて 2 番目の UserControl が読み込まれます。
ありがとう IFA_User
c# - 動的に挿入された別のユーザーコントロール内のユーザーコントロール
私はページを構築するエンジンを持っています(必ず)と呼ばれengine.aspx
ます。ユーザーコントロールとengine.aspx
ビルドを指定するだけで、必要なものはすべて揃っています。ただし、今回は、メインのユーザーコントロール内に別のuserControlを配置する必要があります。通常のaspxでコントロールを開くと、すべて正常に機能します。しかし、エンジンで開こうとすると、2番目のコントロールのイベントが機能しません。誰かがなぜ知っていますか?
私はこの方法で最初のコントロールを追加しています:
すでに最初の2番目のコントロール。
c# - 設計時に「オンザフライ」ユーザー コントロールにコントロールを追加する..?
左側の「Panel1」でユーザーが描画したリストボックス コントロールをホストする SplitContainer で構成される C# WinForms 'ListboxPanelControl' UserControl があります。SplitContainer の右側の「Panel2」は、項目がリストボックスに追加されると追加されるパネルをホストします。そのため、設計時のユーザーが最初の項目をリストボックスに追加すると、関連付けられたパネルが SplitContainer の「Panel2」に追加されます。リストボックスに 2 番目の項目が追加されると、2 番目のパネルが SplitContainer の「Panel2」に追加されます。次に、ユーザーがリストボックス項目を選択すると、関連するパネルが右側に表示されます。
この問題は、ユーザーがコントロール (ボタンなど) をツールボックスから現在アクティブな右側のパネル (現在選択されているリストボックス項目に対応するパネル) にドラッグ アンド ドロップしたときに発生します。プログラムで適切な Panel の Controls コレクションに追加しましたが、Microsoft Visual Studio IDE 内で「'子' はこの親の子コントロールではありません」というエラーが発生します。
私は問題を調査し、「別のコントロールの子であるコントロールが、デザイン時にコントロールをドロップすることを受け入れる方法」を示すいくつかの有用な記事を発見しました。例: http://www.codeproject.com/記事/37830/Designing-Nested-Controls
これは、「DesignerSerializationVisibility」属性を ControlDesigner の「EnableDesignMode」メソッドと組み合わせて使用し、VS IDE が別のコントロールへのコントロールのドロップを処理できるようにします。問題は、このシナリオでは、コントロールをホストしている UserControl のターゲットが効果的に修正され、事前に認識されていることです。私のコントロールでは、デザインタイムに他のコントロールをドロップできるターゲット ホスティング パネルは、事前にはわかりません。これは、私の UserControl 自体を「オンザフライ」で構築できるためです (ユーザーがさらにリストボックス項目を追加するため)。より潜在的なホスト パネルで)。
「DesignerSerializationVisibility」および「EnableDesignMode」メソッドをより柔軟な方法で使用しようとしましたが、前述の「子はこの親の子コントロールではありません」というエラーが発生するようです。
これがすべて理にかなっていることを願っています!? コードは現在、次のようになっています。
これは ListboxPanelControl クラス内にあります: ...
次に、ListBoxPanelControl の「OnControlAdded」イベントで、現在アクティブなパネルの「EnableDesignMode」を (単純な「SetDesignMode」ラッパーを介して) 呼び出し、コントロールを追加します。
問題を十分に明確に説明できたことを願っています。基本的に、WinForms UserControl に Control を追加できた人はいますか?ここで、Control をホストしているターゲット自体が子 Control であり、UserControl 自体が動的でオンザフライで構築されている場合は?
ヘルプ/洞察をありがとう!トニー。