4

シンプルなドロップダウン リスト (dropdown1) と 2 つのテキスト ボックス (textbox1) と (textbox2) を含むフォーム (form1) があります。

シナリオは次のとおりです。ユーザーが textbox1 にコードを入力すると、入力した内容に基づいて、コードの「タイプ」が textbox2 に表示されます。textbox2 は読み取り専用です。

シナリオの主要部分は、textbox2.text が「Polymeric、Cord、Seat」などの特定の値 (タイプ) と等しい場合にのみ、dropdown1 が form1 に表示され、いくつかの色で塗りつぶされる必要があります -DB から取得-

この条件をハードコーディングすることは正しい判断だと思いますか? そうでない場合、あなたの提案は何ですか?

4

5 に答える 5

0

textbox1のコードのタイプを決定するロジックがすでにあると仮定すると、リストボックスは次のように有効にできます。

まず、コードタイプの列挙を定義します。


enum CodeType
{
    Polymeric,
    Cord,
    Seat
}

次に、リストボックスを有効/無効にします。


public void test()
{
    if (Enum.IsDefined(typeof(CodeType), textBox2.Text.Trim()))
    {
        listBox1.Enabled = true;
    }
    else
    {
        listBox1.Enabled = false;
    }

    //Alternative
    //listBox1.Enabled = Enum.IsDefined(typeof(CodeType), textBox2.Text.Trim());
}

リストボックスが以前に非表示になっている場合は、リストボックスのEnabledプロパティではなく、Visibleプロパティを変更する必要があることに注意してください。

これも避けたい場合は、タイプ名を設定ファイルに移動して、実行時に読み取ることができます。

于 2011-01-04T08:51:57.397 に答える
0

ハードコーディングしているものが変更される可能性がある場合、ハードコーディングは決して良くありません。

たとえば、新しいタイプを追加する必要があり、すべてを再構築する必要があります。

私の提案: 可能であれば、コードと型の間のマッピングを構成可能にします。

于 2011-01-04T08:11:42.847 に答える
0

他の人が言ったように、ハードコーディングは決して良い考えではありません。色のデータベースにアクセスしていると言いましたが、データベースにコード/タイプ マッピング用の単純なルックアップ テーブルを用意してみませんか? これはおそらく最も複雑なソリューションですが、いくつかの理由から最も堅牢です。

Web サーバーが 1 つしかなく、データのレプリケーションについて心配する必要がない場合は、マッピングを XML ファイルに実装し、スライドする有効期限でファイルをメモリにキャッシュするだけです。

于 2011-01-28T17:27:08.593 に答える
0

そのようなルールをハードコーディングすることは決して良いことではありません。

次のようなクラスを作成します

class Something
{
    public string Keyword;
    public string KeywordType;
    public List<string> ListOfItems;
}

次に、データベース、xml ファイル、またはその他のものから何かのリストを作成しますが、それは問題ではありません。

public List<Something> ListOfSomethings;

データ ストアから読み取り、それぞれをリストに追加します。

ListOfSomethings.Add(new Something("keyword","KeywordType",new List<String>{"Item1","Item2"});

次に、ユーザーが textbox1 に何かを入力したら、ListOfSomethings を linq またはループして必要なアイテムを見つけ、textbox2 をSomething.KeywordTypeに設定します。次に、Something.ListOfItems のカウント > 0 の場合は、アイテムをコンボボックスに追加して作成します。見える。

于 2011-01-04T08:36:13.853 に答える
0

それはあなたのプロジェクトの最終的な複雑さについてです.2ページのプロジェクトの場合、それが一度だけであり、あなただけでなく誰でも変更できるアクセス可能な場所にある限り、ハードコーディングしても問題はありません.今後のそのプロジェクト。

たとえば、ヘルパー クラスに追加します。

public const string[] SearchTypes = new string[] { "polymeric", "cord", "seat" };

あなたを助けるために拡張メソッドを追加してください

public static string ToJavaScriptArray(this string[] array) {
    string r = "";

    foreach(string s in array)
        r += String.Format("'{0}',", s);

    return r.TrimEnd(',');
}

次に、必要な特定のページのJavaScriptで、簡単に追加できます

var searchTypes = new Array(<%= SearchTypes.ToJavaScriptArray() %>);

コードでjavascript配列を使用して、「タイプ」がその配列に含まれているかどうかを確認します。

私たちを助けるためにプロトタイプを追加しましょう

Array.prototype.has = function(obj) {
    return this.indexOf(obj) >= 0;
}

それから

if( searchTypes.has( document.getElementById('textBox1').value ) { 
    // show dropdown        
}

それが役に立てば幸い。

于 2011-01-04T08:45:33.207 に答える