2017-01-15 1 views
0

CheckBoxListから青と赤のような2色を、4つのオプションのパラメータと最終的な合成結果を出力するメソッドに送信します。CheckBoxList項目をメソッドに送信する方法は?

これはCheckBoxListのである:

Choose Two Colors: 
    <asp:CheckBoxList ID="CheckBoxList1" runat="server" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"> 
     <asp:ListItem>Red</asp:ListItem> 
     <asp:ListItem>Blue</asp:ListItem> 
     <asp:ListItem>Yellow</asp:ListItem> 
     <asp:ListItem>Green</asp:ListItem> 
    </asp:CheckBoxList> 

これは、4つのオプションのパラメータを取得するメソッドです:誰かがCheckBoxListのから2つの色を選択したときに

static string ColorMixer(string Blue = "NotDefined", string Yellow = "NotDefined", string Red = "NotDefined", 
    string Green = "NotDefined") 
{ 

    string blue = Blue; 
    string yellow = Yellow; 
    string red = Red; 
    string green = Green; 
    string results; 
    if (blue.Equals("Blue")&&yellow.Equals("Yellow")) 
    { 
     results = "GREEN"; 
     return results; 
    } 
    if (red.Equals("Red")& green.Equals("Green")) 
    { 
     results = "Brown"; 
     return results; 
    } 

    the rest of codes goes here .... 

    else 
    { 
     results = "Result is Unspecified"; 
    } 
    return results; 
} 

は今、私のようなコードを持つ2つの色を取得したいですこれは:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach (ListItem item in CheckBoxList1.Items) 
    { 
     if (item.Selected) 
     { 

      string selectedoptions; 
      selectedoptions = item.Text; 
     } 

    } 

} 

そして、選択された文字列アイテムを名前parameメソッドに合わせる

文字列 "selectedoptions"から選択した色をどのように取得し、それをどのようにフォーマットできますか?

ColorMix(Blue:"Blue",Red:"Red") 

ここで、「青」と「赤」はユーザーが選択した色です。

+0

あなたの問題やエラーを適切に特定してください! – Null

+0

誰かがチェックボックスリストから2つの色を選択したければ、名前付きパラメータとしてアイテムをメソッドに送信できます。 – Mohsen

答えて

0

これはASP.Netではなく、同じことが当てはまると確信しています。私はあなたがしようとしていることに対して正しいイベントを使用しているとは思わない。イベントCheckBoxList1_SelectedIndexChangedが発生し、ユーザーがCheckBoxListにクリックされ、選択されたアイテムが変更されるたびに発生します。チェックボックスが変更されていない場合でも、イベントが発生します。与えられたチェックボックスがチェックされているかチェックし、メソッドにいくつかの変数を渡すなど、ここで行う必要があることを実行できますが、ユーザーが選択を変更するたびにこれを行います。

私はボタンがあなたのカラーメソッドを起動するためのより良いコントロールになると思います。この方法では、このボタンが押されるまでアイテムをループしません。次に、リストをループして、チェックされた色をつかむことができます。あなたが2色だけを渡したかったことを示しているので、あなたは1色(1色)がチェックされているか、3色以上があれば何をしたいのかははっきりしません。

以下は、私がCheckedListBoxで使用したコードです。項目の名前は、赤、青、緑、黄色です。 CheckBoxList1_SelectedIndexChangedイベントの代わりにButton_Clickイベントを使用しました。ボタンを押すと、リストをループして、項目インデックス、名前、およびチェックされた状態を表示します。

private void button1_Click(object sender, EventArgs e) { 
    // Make a list of the checked colors you want to pass 
    //List<string> checkedItems = new List<string>(); 
    int index; 
    foreach (string item in checkedListBox1.Items) { 
    index = checkedListBox1.Items.IndexOf(item); 
    string checkState = checkedListBox1.GetItemCheckState(index).ToString(); 
    MessageBox.Show("Item on line " + index + " name: " + item + 
        " is currently: " + checkState); 
    } 
} 

これは役に立ちます。

+0

ありがとう、とても素敵なアプローチです – Mohsen

関連する問題