2016-08-30 4 views
0

私は、顧客情報を収集してデータベースに挿入するWebフォームを作成しています。顧客は3種類の口座を持つことができます:口座(この場所への請求書と船積み)、請求先口座(この場所への請求書のみ)、配送口座(この場所にのみ出荷されます)C#でウィザードコントロールを動的に作成するにはどうすればよいですか?

集められた情報は

私は現在、5つのステップ(各カテゴリに1つ)を持つウィザードを持っていますが、5つのステップ(各カテゴリに1つ)がありますが、たとえば、配送先住所には、一般情報と従業員情報が必要で、必要に応じてオーナー情報が必要です。また、Trade ReferenceやBanking情報がないようにしてください。また、ユーザーは完全に記入する必要がありますtの前に一般的な情報カテゴリを取り出す彼は勘定タイプを決定することができます。

ウィザードの手順全体を無効にする方法はないようです(サイドバーにはリンクが表示されず、移動することはできません)ので、ウィザードを動的に作成して、必要な手順のみを取得します。問題は、現在ウィザードが.aspxページ上の700行以上のコード行であり、動的に作成するとおそらく倍増する(私が運が良ければ)。

スタティックに各ステップを作成してから、ウィザードで使用するステップを動的に決定できますか、まったく動的なのですか?

(またはこれが最も可能性の高いケースです)私が探している結果を得るもっと簡単な解決策がありますか?

+0

マイケル、これは「缶詰め」のウィザードですか?あなた自身で書きましたか?缶詰の場合、データに基づいてステップをオプションとしてマークする方法があるはずです。 –

+0

@ MarkLyon標準のaspウィザードです。私は、ActiveStepChangeイベントで一連の入れ子になったifステートメントを使用してステップをスキップすることができますが、私が知る限り、サイドバーのリンクを選択的に表示する方法はありません。それはそれらのすべてであるか、またはそれらのどれでもありません。 –

+0

Dillie-Oは以下のように述べています。ウィザードは古い技術であり、サーバーコントロールにはあま​​り愛されていません。ウィザードのステップをスキップできる場合は、その入れ子にされたifステートメントでActiveStepを設定できますか?私はそれがビジネスロジックのための望ましい場所ではないことを知っていますが、あなたがウィザードに悩まされているなら、あなたは何か変わったことをしなければならないかもしれません。したがって、ユーザーがサイドバーの項目をクリックした場合は、適切な手順にスキップしてください。 –

答えて

0

ウィザードの高度にカスタマイズ可能なニーズを考えれば、多くの人が手を使ってすべてのコードを作成することに賛成です。ここで話しているウィザードは、ASP.Net WebForm Wizardオブジェクトであると想定するのは安全ですか?私はサーバーコントロールがしばらく更新されていないと信じています。

UIコンポーネントのクライアント側をすべてビルドしてから、AJAX/WebAPIエンドポイントでデータ処理を行うことができます。このルートを使用すると、処理中のアカウントタイプのタイプ(URLや隠しフォームフィールドなどから取得できる)に基づいて、さまざまなタブ/ステップを簡単に表示/非表示/カスタマイズできます。あなたは、そこにライブラリを見つけるために "jQueryウィザードビルダー"または類似のもののためのGoogle検索を行うことができます。

この点でデータ処理からプレゼンテーションを分離すると、柔軟性が増します。それでも700行以上のコードが必要になるかもしれませんが、エンドユーザー向けにデータを処理する方法、方法、タイミングをより詳細に制御できます。各ステップの後にサービスに投稿するようにウィザードを設定したり、送信前にすべてのデータが収集されるまで待ってください。

関連する問題