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

1 posts, 0 answers
  1. Hazzard
    Hazzard avatar
    24 posts
    Member since:
    May 2006

    Posted 06 Nov 2011 Link to this post

    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



Back to Top