問題タブ [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# - コントロールを動的に追加されたユーザーコントロールに移動するにはどうすればよいですか?
一部のWebコントロールをCreateChildControlsメソッド上で動的に移動するユーザーコントロールがあります。このコントロールを次のようなページに使用する場合:
それは完璧に動作します。
しかし、そのuserControlを次のようなページに動的に追加したい場合:
.cs
CreateChildControls内で次のエラーでクラッシュします:DataBind、Init、Load、PreRender、またはUnloadの各フェーズではコントロールコレクションを変更できません。
正確な行は、UserControl内のプレースホルダーにwebControlsを追加したときです。
そのため、この場合、UserControlを動的に追加すると、CreateChildControlsイベント内でWebコントロールを移動できない理由がわかりません。
asp.net - Asp.Net UserControls は、コントロール階層に「遅れて」追加されているかどうかを知ることができますか?
標準パラダイムを使用して、ポストバック中に初期化をやり直すことを回避するユーザー コントロールがありますif(!IsPostBack){//initialize myself}
(そのため、ViewState の使用量を増やすために DB ヒットを少なくします)。このアプローチはほとんどの場合うまく機能しますが、ポストバック中に、このコントロールを「遅く」コントロール階層に追加したい場所が 1 つあります。
もちろん、これにより初期化ロジックが失敗し、コントロールが初期化されていない状態でレンダリングされます。
!IsPostBack
カットしていないので、初期化する必要があるかどうかを判断するためにどのガードを使用する必要がありますか? 中にフラグを設定できましLoadViewState
たが、それは少しハックなようです。私が見つけたいのは、コントロールが最初にコントロール階層に追加されたときにのみ発生する条件であり、それをキーにします。そのような条件は存在しますか?
[編集] 含まれているページのサンプル疑似コードは次のとおりです。
some_control
遅れて追加されたことを知る方法はありますか?
asp.net - jquery ajaxを使用してユーザーコントロールを動的にロード
この問題に関するいくつかの記事を読みましたが、技術的に言えば、ユーザー コントロールから HTML コードを取得し、それを含むページに挿入するだけです。真のユーザーコントロールをページにロードして、ポストバック時にロードされたユーザーコントロールに引き続きアクセスし、サーバー側でフィールドを検証できるようにしたい.ユーザー コントロールが ajax を使用してページに読み込まれると、ページが最初に読み込まれたときにページ ライフ サイクルの一部として最初に作成されたように動作するはずです。それは理にかなっていますか?これを行う方法についてのアイデアはありますか?UpdatePanel は解決策かもしれませんが、私はそれを使用したくありません。
asp.net - ユーザー コントロール属性に動的にアクセスするにはどうすればよいですか?
ページのユーザーコントロールへのリンクがページの上部に配置される「ユーザーコントロールメニュー」を作成しようとしています。これにより、ページにいくつかのユーザーコントロールを配置し、ユーザーがあまりスクロールせずにページのそのセクションにジャンプできるようになります。これを行うために、各ユーザー コントロールをフォルダー (usercontrols) に配置し、各コントロールに Description プロパティを指定しました ( <%@ Control Language="C#" Description = "Vehicles" .... %>
)。
私の質問は、この説明に動的にアクセスするにはどうすればよいですか? この説明をメニューのリンクとして使用したいと考えています。これまでのところ、ASP.usercontrols タイプのコントロールを ControlCollection で検索する foreach がページにありました。もしそうなら、その属性にアクセスしてその説明プロパティを取得できると思います。これどうやってするの?(「ユーザーコントロールメニュー」を実現するためのより良い方法にもオープンですが、それは別の質問かもしれません。)使用する必要があります((System.Web.UI.UserControl)mydynamiccontrol).Attributes.Keys
か?
c# - コンソール アプリケーションまたは Windows サービスから .ascx ユーザー コントロールを読み込むにはどうすればよいですか?
ドキュメント (請求書など) のテンプレートとして ascx ユーザー コントロールを使用します。ここで、これらのコントロールを Windows サービスから読み込んで HTML にレンダリングし、PDF に変換する必要があります。
それで、正しい方法/回避策は何ですか?TemplateControl.LoadControl(パス) が機能しません。
c# - ポストバック用に動的に挿入されたコントロールの数を保存する
次の機能を作成する必要があり、複数のポストバックに関する情報を保存する最良の方法を探しています。
たとえば、「私が訪れた場所」という質問に関連する TextBox があるとします。一度 TextBox が最初の読み込みで読み込まれます。その下に「別の場所を追加」ボタンがあります。これはポストバックされ、最初の TextBox の下に別の TextBox が追加されます。これは x 回実行できます。
私が持っている質問は、ユーザーがページに追加したコントロールの数をどのように保存/記憶するかです。この読み込みは Init イベントで行う必要があり、ViewState はこの時点では読み込まれていません
編集*:
ユーザーが保存すると、いくつかの検証が行われるため、検証が失敗した場合は、投稿されたデータとともにすべての TextBox を表示する必要があることを忘れていました。
c# - C# を使用してサーバー側からユーザー コントロールを含む複数のコンテンツ プレースホルダーを読み込む
C# を使用してサーバー側からユーザー コントロールを含む複数のコンテンツ プレースホルダーを読み込む方法..
現在サーバー側(page_load内)から、次のように1つのユーザーコントロールをロードしています:
ページに 8 つのユーザー コントロールをロードする必要があります。どうすれば同じことを達成できますか? 前もって感謝します..
c# - 動的に読み込まれたユーザー コントロールにパラメーターを送信する
jQuery を使用して、一部のユーザー コントロールのコンテンツをページに読み込みます。したがって、ユーザーコントロールからコンテンツを抽出するこの機能があり、魅力的に機能します。
しかし、作成時にいくつかのパラメーターをユーザー コントロールに送りたいと思っています。これは可能ですか、どうすればそれを行うことができますか?
LoadControl()
いくつかのパラメーターを使用できることがわかりますobject[] parameters
が、使用方法がよくわかりません。助かります。
asp.net - asp.netのuserControlでOutputCacheを使用する方法
データベースからロードされたユーザーコントロールをロードするためのこのコードを含むaspxページがあります
およびascxにはoutputcacheがあります
ページを閲覧すると、このエラーが発生します
[NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。] c:\ Documents and Settings \ Administrator \ My Documents \ Visual Studio 2005 \ Projects \ AnaweenNews.root \ AnaweenNews\のContent_SectionNews.Page_Load(Object sender、EventArgs e) anaween website \ Content \ SectionNews.aspx.cs:127 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp、Object o、Object t、EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender、EventArgs e)+35 System.Web.UI.Control.OnLoad(EventArgs e)+99 System.Web.UI.Control.LoadRecursive()+50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint、Boolean includeStagesAfterAsyncPoint)+627
バージョン情報:Microsoft .NET Frameworkバージョン:2.0.50727.3615; ASP.NETバージョン:2.0.50727.3618
c# - タイプを指定してユーザーコントロールをロードする方法
タイプ(つまり)がある場合、ユーザーコントロール(.ascx)をインスタンス化して使用する方法はありますtypeof(MyUserControl)
か?
テキストボックスやドロップダウンリストなどの通常のasp.netコントロールを使用すると、新しいインスタンスを作成して、それをコントロールコレクションに追加できます。これは、ユーザーコントロールでは機能しないようです。新しいインスタンスを作成してコレクションに追加し、そのすべてのイベントを発生させることはできますが、実際にはページにレンダリングされません。通常Page.LoadControl()
、.ascxへのパスを使用して呼び出します
あなたが持っているのがそのタイプだけである場合、これは問題を提示します。メソッドに与える.ascxへのパスを取得するにはどうすればよいですかLoadControl
。理想的には、Pageオブジェクトへの参照も必要ありません。