This is a migrated thread and some comments may be shown as answers.

set combobox and store changes made by user using INotifyPropertyChanged List in MVVM Model Property

0 Answers 71 Views
ComboBox
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Hazzard
Top achievements
Rank 1
Hazzard asked on 06 Nov 2011, 02:48 PM

This is actually a combobox within the RadGridView but my c# syntax/datastructure problem is the same.  I need a list with two items ClassName and ClassID for a combobox. The possible key-value pairs will be 'A'-0  'B'-2, 'C'-3 and 'D'-4 . 

I've been provided a table from a client with either the values "A or B" or "A,B,C,D".  (Picture of table info below)  I need to translate either of those two possibilities into two possible collections to bind to a combobox.  Either the combobox displays an A and B, or A and B and C and D.  When the user makes a selection and saves.... the collection (rows in datagrid) will contain within it the key-value pair selected. That value will be returned to target table also pictured below with it's possible values.

If someone can see where I'm trying to go with this I would appreciate any comments or suggestions, even if that comment is I'm not clear what I'm trying to do. I'm stuck with these tables.  Below is my idea of a model and then a switch statement I need to put somewhere to translate the incoming value into a form the combo box will require. (to bind to)  Thanks for helping me work through this design process in an area new to me.   greg

public class Model : INotifyPropertyChanged
{
   private string _ClassName;
   private string _ClassID;

   public Model(Model)
   {
   }   
   public string ClassName{ get { return _ClassName; } set { _ClassName= value; RaisePropertyChanged  ("ClassName"); } }
   public string ClassID{ get { return _ClassID; } set { _ClassID= value; RaisePropertyChanged("ClassID"); } }


  public event PropertyChangedEventHandler PropertyChanged;
  private void RaisePropertyChanged(String propertyName)
  {
      PropertyChangedEventHandler handler = PropertyChanged;
      if (null != handler)
      {
           handler(this, new PropertyChangedEventArgs(propertyName));
      }
  }
}

switch (incoming 'Class' field value in collection)
{
    case "A or B":
        AorB();
        break;
    case "A, B, C, D":
        ABCD();
        break;
}

private ObservableCollection<ClassName> AorB()
{
   ObservableCollection<ClassName> _ClassNames = new ObservableCollection<ClassName>();
   ClassName _className;

   className = new ClassName ("A", 1);
   _ClassNames.Add(className );

    className  = new ClassName ("B", 2);
    _ClassNames.Add(className );
 
    return _ClassNames ;
}

private ObservableCollection<ClassName> ABCD()
{
   ObservableCollection<ClassName> _ClassNames = new ObservableCollection<ClassName>();
   ClassName _className;

   className = new ClassName("A", 0);
   _ClassNames.Add(className );

    className = new ClassName("B", 1);
    _ClassNames.Add(className );

   className = new ClassName("C, 2)
   _ClassNames.Add(className );

    className = new ClassName("D, 3);
    _ClassNames.Add(className );
 
    return _ClassNames ;
}

Source table

group by class

Target table where values will be saved once selected

Target Table SemsRequestEMCTest

Class values flow



Tags
ComboBox
Asked by
Hazzard
Top achievements
Rank 1
Share this question
or