2009-08-18 3 views
1

アセンブリ内の特定のタイプのプロパティに基づいて、いくつかの入力フィールドを公開する必要があります。C#で動的UIを作成しますか?

このようなアプローチがどれほど一般的であるかわかりません。おそらくもっと簡単な方法があります。サーバーの代わりにクライアント側にあるかもしれません。

誰かがこのようなことをする良い方法を知っているなら、私は助けていただければ幸いです。

それに応じて入力コントロールを作成し、divコンテナにコントロールを追加するだけですか?それより複雑なのかどうかはわかりません。 私は何とかCSSクラスをコントロールに追加する必要があります。それはやりにくくなるかもしれません。

+1

ご使用のサーバー側の言語は? – Sampson

+0

私はC#言語で作業しています........ – topwik

+0

@Jonathan Sampson:同意しました。どんなサーバーサイド言語でも@towpsは何をしたいのですか?しかし、どのように100%言語に依存していますか。 – Randolpho

答えて

0

私はjQueryを活用しました。

私は必要な基本レイアウトで簡単なマークアップをレイアウトしました。

コントロールを動的に作成するには、jQueryメソッドを使用してJavaScriptですべて行いました。

もちろん、データセットをレンダリングするのに十分なインテリジェントなUIに戻す必要があります。

+0

もちろん、これはC#ではありませんが、これがより良い方法であることがわかりました。 – topwik

1

これはすべて、標準のasp.net開発のようです。良いチュートリアルはあなたを助けることができるはずです。 aspサーバーコントロールの場合は、CssClassプロパティを使用してコントロールのクラスを設定します。

ここにはW3C学校のasp.net tutorialがあります。

+0

が合意したので、ウェブプログラミングの全ポイントは、いくつかの条件に基づいてダイナミックコントロールをレンダリングすることです。 –

0

私はあなたが入力フィールドを作成するプロパティのタイプに基づいて、どのプロパティエンティティが持っているか把握するためにリフレクションを使用すると仮定します。コードビハインドの入力を処理するコントロールを動的に作成する必要があります。あなたはそのコントロールとIDを与えてください。ポストバックでこれらのコントロールを再作成する必要があります。これは動的なプロパティエディタに似ています。いくつかの無料のものがあるかもしれない、それのためのGoogle。

0

UIが完全に動的である必要がない場合は、マークアップ内のすべてのコントロールをVisible = "false"に設定された任意のコントロールとともに含めることができます。次に、コードビハインドで適切なコントロールを選択的に有効にします。たとえば:

Default.aspxの

<asp:Button ID="EvenButton" runat="server" Text="Even" Visible="false" /> 
    <asp:Button ID="OddButton" runat="server" Text="Odd" Visible="false" /> 

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
    { 
     String msg = "A message to count"; 

     if (msg.Length % 2 == 0) 
     { 
      // Enable the Even Button 
      EvenButton.Visible = true; 
     } 
     else 
     { 
      OddButton.Visible = true; 
     } 
    } 

この方法の利点は、あなたがマークアップで簡単に適切なCSSで物事を置くことができるということです。一方、UIがこれよりもはるかに動的な場合は、コードビハインドでコントロールを動的に作成し、Controls.Add()の呼び出しを介してページに追加する必要があります。しかし、この方法ではレイアウトが難しくなります。そして、各ポストバックでイベントハンドラを再配線するようなことに対処する必要があります。

希望に役立ちます。

関連する問題