0

したがって、同じ値を持ち、同じ値を取得する10個のドロップダウンとラベルの範囲があります。同じコードを 10 回コピーして貼り付ける以外に、これを行う別の方法はありますか?

protected void drpPOMedList1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (drpPOMedList1.SelectedIndex == 0)
    {
        lblPOLimit1.Text = "PO Med not Selected";
    }
    else if (drpPOMedList1.SelectedIndex == 1)
    {
        lblPOLimit1.Text = "0 / 0";
    }
    else if (drpPOMedList1.SelectedIndex == 2)
    {
        lblPOLimit1.Text = "8 / 20";
    }
 }
4

4 に答える 4

1

すべてのドロップダウンリストに同じデリゲート

protected void drpPOMedList1_SelectedIndexChanged(object sender, EventArgs e)
{ 
   ...
}

このデリゲートをすべてのドロップダウンリストに関連付けます

<asp:DropDownlist id="ddl1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="drpPOMedList1_SelectedIndexChanged" />

<asp:DropDownlist id="ddl2" runat="server" AutoPostBack="true" OnSelectedIndexChanged="drpPOMedList1_SelectedIndexChanged" />

.......
于 2012-08-28T19:22:45.147 に答える
1

テキスト間の関係を見つけようとしましたが、失敗しました。テキストの関係がない場合は、配列またはリストを使用してください。

private readonly string[] arr = new string[] { "item 0", "item 1", ... }
protected void drpPOMedList1_SelectedIndexChanged(object sender, EventArgs e)
{
   lblPOLimit1.Text = arr[drpPOMedList1.SelectedIndex];
}
于 2012-08-28T19:21:16.833 に答える
0

アイテムをデータ構造(リスト/配列/その他)に保存し、必要に応じて編集することができます。

于 2012-08-28T19:22:26.363 に答える
0

私は通常、これらの種類の変換テーブルをディクショナリオブジェクトに配置し、これらのディクショナリオブジェクトをメソッドの外に移動します。これにより、これらのテーブルを簡単に再利用したり、後で別の構造(データベースストアなど)に置き換えたりすることができます。

class SomeClass
{
    static readonly Dictionary<int, string> INDEX_TEXT_TABLE = new Dictionary<int, string>
    {
        { 0, "PO Med not Selected" },
        { 1, "0 / 0" },
        { 2, "8 / 20" }
    };

    protected void drpPOMedList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        lblPOLimit1.Text = INDEX_TEXT_TABLE[drpPOMedList1.SelectedIndex];
    }
}

ちなみに、意味的に意味のあるSelectedValueプロパティの使用を検討することをお勧めします。ドロップダウンリストは通常​​、キーと値の両方が文字列型であるキーと値のペアです。したがって、このプロパティを使用することは、データと表現の間のより適切なマッピングです。これにより、コードの明確さも向上します。

class SomeClass
{
    static readonly Dictionary<string, string> VALUE_TEXT_TABLE = new Dictionary<string, string>
    {
        { "None", "PO Med not Selected" },
        { "Zero", "0 / 0" },
        { "EightTwenty", "8 / 20" }
    };

    protected void drpPOMedList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        lblPOLimit1.Text = VALUE_TEXT_TABLE[drpPOMedList1.SelectedValue];
    }
}
于 2012-08-28T19:22:52.810 に答える