問題タブ [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.

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

asp.net - CompositeControl の ViewState に関する問題

ASP.Net で CompositeControl を構築しましたが、ホスティング ページで Control の 3 つのインスタンスの ViewState を維持するのに問題があります。私の CompositeControl にはプロパティ「HeaderText」があり、私の CompositeControl の 3 つのインスタンスはすべて、ページの最初のコントロール インスタンスの値を持っています。

例: 最初のコントロールに HeaderText = "Test 1" がある場合、他のすべてのコントロールにも HeaderText = "Test 1" があります。

デバッグ中に、プロパティの set 演算子が 2 回呼び出されていることがわかりました。Debug.WriteLine() 出力で set 演算子をトレースすると、出力は次のようになります。

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

c# - カスタム コントロールのネストされた DropDownList に ViewState を保存する

asp.net DropDownList の周りにブーストラップ マークアップの束を本質的にラップするカスタム コントロール (BoostrapDropDown と呼ばれる) を作成しました。結果のコントロール階層は、基本的に次のようになり、DropDownList を除くすべてが HtmlGenericControl になります。

コントロールからネストされた DropDownList に DataSource プロパティを「通過」していましたが、ポストバック時にすべての値を失っていました。

ここが恥ずかしい部分です。1 か月前、Web を検索して解決策を作成できましたが、うまく文書化できませんでした。そして今、ソリューションの作成に使用したページが見つかりません。それがどのように機能しているのかわかりません。誰かが光を当てることができることを願っています。以下は関連するソースコードです。

更新: 完全なコード

コントロールは、次の方法でマークアップで使用されます。

次に、コード ビハインドに次のように記述します。

だからここに私の混乱があります...

  1. の間CreateChildControlsDataSourceは元のレンダリングにのみ存在します。そこでDataBind、ネストされた DropDownList を呼び出して、最初に値を設定し、すべてのコントロールの項目をItemsプロパティに格納します。
  2. ItemsViewState への永続化/ViewState からのロード方法を理解していると確信しています。
  3. 私が迷子になったところで、私の Itemsプロパティはどのようにして DropDownList を再設定するために使用されますか? Load\SaveViewState追加した( と呼ばれる) ことが問題を本当に解決した可能性があると考えていましたがbase.Load\SaveViewState、プロパティへのすべての参照をコメントアウトするとItems、ドロップダウン リストの値が再び失われていました。

ポストバックで世界がどのようにItems再配置されているのですか?!inputControl.Items