問題タブ [composite-controls]
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.
.net - 複合コントロールのパネルは可視性を無視します
指定された状態に基づいてページに HTML をレンダリングする複合コントロールを構築しています。
コントロールをセットアップし、コンポジットに追加し、ControlCollection
セットアップ中にコントロールの可視性を設定すると、false
正常に動作しているように見えますが、ページのポストバックによってパネルが表示されるまで、パネルは非表示になります。
しかし、メソッドで and をラップするRenderBeginTag(writer)
とRenderEndTag(writer)
、初期化中に " " ステートメントをRender
無視しているように見えますか?visible = false
これにより、初期化中の可視性チェックに関係なく、基本的にパネルが表示されます。さまざまなシナリオをテストしましたが、何らかの理由で、これは状態を無視するだけです。何か案は?
ありがとう、
エリック
c# - CMS コンテンツ エディター/ビューアー
ユーザーの 1 人が、メイン Web サイトのコンテンツのセクションを編集できるようにする必要があると判断し、それを実装するタスクが私に与えられました。基礎となるモデルは、ページ内の 1 つ以上の div に CMS からコンテンツが入力されるというものです。
コンテンツを配信するために、オブザーバー モデルを使用してコンテンツを配信していますが、これは正常に機能します。ページには (少なくとも) 3 つのサーバー コントロールが含まれています。データ プロバイダー (CMS)、コントローラー (サブジェクト)、およびコンテナー (オブザーバー)。コンテナーには、コントローラーからプッシュされたデータで適切に画面にレンダリングされる 2 つのコンテンツ パネル (編集または表示) のいずれかが含まれます。
ただし、エディター パネルとビューアー パネルを切り替えて (変更をプレビューできるようにするため)、編集したコンテンツをデータ プロバイダー (CMS) に公開できるようにする必要がありますが、ポストバックで編集したコンテンツを失い続けています。「SaveViewState」メソッドをオーバーライドしようとしましたが、コンテンツ パネルは事前レンダリング中に作成されるため (ViewState プロパティに依存するため)、コントロール コレクションは常に以前に作成されたオブジェクトを表示します (つまり、編集パネルが表示されている場合、コントロール コレクション内のオブジェクトはプレビュー パネルです)。
パフォーマンスの問題のために両方のコントロールをレンダリングする道をたどりたくありません。編集したテキストを保存する 3 次コンポーネント (おそらく非表示フィールド) を作成することを検討していますが、ここにいる誰かがこれを構造化する方法についてより良いアイデアを持っていることを望んでいましたか?
c# - CompositeControl 内のデータバインディング コントロール
基本的に MultiView のラッパーである CompositeControl を作成しましたが、ビュー内で GridView や FormView などのデータバインドされたコントロールを使用しようとすると、次のエラーが発生します。
クラスを最小限に抑えましたが、まだエラーが発生しています。クラスは次のようになります。
そして、マークアップは次のとおりです。
FormView を CompositeControl の外に移動すると、問題なくデータバインドされます。また、標準の MultiView を使用すると、正常に動作します。
何か案は?よろしくお願いします(初投稿のため、情報が抜けていたらすみません)
編集:さらに奇妙なことに、FormView を別の ascx UserControl に抽出し、それをビュー内に配置すると、機能します!
user-controls - 複合制御 - ユーザー制御 - さまざまなアプローチ
ログイン コントロールを作成するこのコードを見たことがありますが、このコードを記述する代わりに、.ascx ファイルを使用してこのコントロールを作成できると思います。誰かがこれら2つのアプローチの違いを説明できますか. ありがとう。ソース:http://www.joe-stevens.com/2010/04/16/creating-a-composite-server-control-with-asp-net/
asp.net - 複合 Web コントロール内のコントロールからのポストバック
コンボボックスとテキストボックスを持つ複合 Web コントロールがあるとします。テキストボックス内のテキストが変更されたときにポストバックして値をコンボボックスのオプションとして追加するように、コントロール機能に組み込むことは可能ですか?
「onchange」ハンドラーをテキストボックスに追加して、Javascript で何かを動作させることができることはわかっていますが、それは実際に私がやろうとしていることではありません。次のように置く方法はありますか:
Web コントロール コードで、テキスト ボックスの TextChanged イベントに接続しますか?
asp.net - 複合コントロール内でクライアント側の検証を行うことはできません
テキスト ボックス、いくつかのバリデータ、およびいくつかの UI コンポーネントを含むカスタム複合コントロールがあります。クライアント側の検証をまったく機能させることができません。サーバー側の検証は、ポストバック後に正常に機能します。私は最終的に、検証 API にフックすることによって、検証の失敗時に TextBox にカスタム CSS を追加することを計画していましたが、クライアント側の検証を実行することさえできません。
このコントロールはジェネリックであることを意図していたため、バリデーターは複合コントロール自体から生成されず、次のように外部から渡されます。
バリデーターが実際に Validators プロパティに追加されるように、persistchildren 属性を指定しました (適切だと思います)。それもうまく機能しているようです。
標準の TextBox を TControl として指定し、テキスト プロパティを公開する派生コントロールがありますが、派生型が行うことはこれだけです。複合コントロールは、CreateChildControls メソッドに依存してコントロールを構築し、バリデータを構成します。CreateChildControls メソッドでバリデータを作成する複合コントロールの例を見たことがあるので、これはライフサイクルに適しているように思えます。
繰り返しますが、サーバー側の検証は問題なく行われます。JavaScript の Page_Validators コレクションには、バリデーターが含まれていません。私が制御できない範囲でマークアップに追加したバリデーターはすべて、javascript コレクションに正常に表示され、適切に機能します。
私は何を間違っていますか?
asp.net - asp.net webforms - ページ コントロールと相互作用する複合コントロール
実験として c# asp.net で複合コントロールを作成しており、複合コントロールのすべてのインスタンスを 1 つの外部コントロールとやり取りさせたいと考えています。これは可能ですか?
私が試したこと:
オプション 1: 外部コントロールがページに存在するかどうかをコントロール内から確認し、存在しない場合は追加します。
オプション 2: デザイン時にターゲット コントロールの ID を複合コントロールに渡してから、this.Page.FindControl() を使用します。
明らかに、それがそれほど単純になるだろうというのは希望的観測でした:)
CreateChildControls メソッド内からこれを実行しようとすると、this.Page.FindControl(target control) は常に null を返します。このメソッド内からページにコントロールを追加しようとすると、例外がスローされます。
「DataBind、Init、Load、PreRender、または Unload フェーズ中にコントロール コレクションを変更することはできません。」
これを達成できる別の方法/イベントはありますか?
gwt - CompositeCell を使用した GWT CellBrowser
以下のようにCellBrowserを構築しようとしています。
問題は、上記のコードで指定されている見出し (数学と科学) を取得できないことです。見出しは別のオブジェクトからのものであり、私の CompositeCell (CheckBox と TextCell) はすべてのアイテムを期待/適用しているようです。
基本的に、CellBrowser でリストを作成しようとしていますが、(CheckBox と TextCell) を持つものと (TextCell) だけを持つものがあります。
お知らせ下さい。
c# - コンポジットコントロールJQueryとエンコードされているアポストロフィ
複合子コントロールが文字列をHTMLにエンコードしているという問題があります。私は次のように設定された子コントロールボタンを持っています:
これに伴う問題は、複合コントロールがソースが表示するWebページにレンダリングされる場合です。
明らかに、私は望んでいません'、アポストロフィが欲しい'、私が試しているように見えるものは何もありません、それは常にエンコードされて出てきます。これは、いくつかの基本的なjquery機能を機能させるために必要です。回避策はありますか?
c# - 複合コントロール間で値を渡す
私はコントロールを持っています:ボタンを定義する複合コントロール。ボタンは Command イベントを呼び出し、別のコントロールのプロパティの値を設定してから、コントロールを表示します。
これらのコントロールは両方とも、事前にコンテナー コントロール内でインスタンス化されます。CreateChildControls() メソッド内の 2 番目のフォームでプロパティの値を取得する必要がありますが、これができないのはなぜですか?
シナリオ:
StepPersonal:
最後に、これが私の問題があるところです。StepFinancial コントロール
StateBag に値を追加しようとしましたが、何もありません。CommandEventHanlder に QueryString を追加しようとしましたが、コレクションがロックされているというエラー メッセージが表示されます。私はキャッシュとセッションを試しました(これはSharePointに展開されるため、セッションは機能しません)ので、それは問題外です。グーグル、ビング、Yahoo! も試してみました。これは運が悪い。
言及しなかった更新 、OnPreRender の下のコレクションにコントロールを追加することはできません。これは、イベントを関連付けないためです。アプリケーションの他の部分を台無しにするため、EnsureChildControlsも使用できません。ただし、このレベルのプロパティの値をステートバッグに追加することはできますが、これは非常に悪い方法だと思います。