Page 1 of 1

List of recipes in alphabetical order

Posted: Fri Nov 29, 2013 2:28 am
by ladin79
Hi!
Currently I'm using a ListBox to sort the list of recipes using the following code:
void FillList()
{
List<string> myRecipeNames;
myRecipeNames = Globals.Recipe1.FieldNames;

foreach( string i in myRecipeNames)
ListBox1.Items.Add(i);
this.m_AnalogNumeric1.Focus();
}

void Popup_save_constant_Opened(System.Object sender, System.EventArgs e)
{
FillList();
}

void ListBox1_SelectionChanged(System.Object sender, System.EventArgs e)
{
Globals.Tags.Recipe_Name_To_Load.Value = (string) ListBox1.SelectedItem;
}

How can I do the same thing using a DataGrid, so as to be able then to sort the list of recipes in alphabetical order?

Thank you very much!

Re: List of recipes in alphabetical order

Posted: Fri Jan 10, 2014 1:36 am
by Edmund
You could do two things, use a datagrid/listview or sort your list.

Have you tried

Code: Select all

List<string> myRecipeNames;
myRecipeNames = Globals.Recipe1.FieldNames;

myRecipeNames.Sort();
I also have a example of a listview but it´s a bit more complex

I load a List<StopItem> into the list view and the binding is done in the xaml file.

XAML

Code: Select all

 <ListView Foreground="#FF000000" FontFamily="Segoe UI Light" FontSize="18" Name="ListView1" Width="1205.28634361233" Height="395.066079295154" RenderTransformOrigin="0.5,0.5" Visibility="Visible" Panel.ZIndex="18" Canvas.Left="41.2158590308372" Canvas.Top="333.495154185022">
    <ListView.View>
      <GridView>
        <GridViewColumn Width="120" Header="From">
          <GridViewColumn.DisplayMemberBinding>
            <Binding Path="Start_time" />
          </GridViewColumn.DisplayMemberBinding>
        </GridViewColumn>
        <GridViewColumn Width="120" Header="To">
          <GridViewColumn.DisplayMemberBinding>
            <Binding Path="End_time" />
          </GridViewColumn.DisplayMemberBinding>
        </GridViewColumn>
        <GridViewColumn Width="240" Header="Cause">
          <GridViewColumn.DisplayMemberBinding>
            <Binding Path="Cause" />
          </GridViewColumn.DisplayMemberBinding>
        </GridViewColumn>
        <GridViewColumn Width="240" Header="Section">
          <GridViewColumn.DisplayMemberBinding>
            <Binding Path="Section" />
          </GridViewColumn.DisplayMemberBinding>
        </GridViewColumn>
        <GridViewColumn Width="240" Header="Position">
          <GridViewColumn.DisplayMemberBinding>
            <Binding Path="Position" />
          </GridViewColumn.DisplayMemberBinding>
        </GridViewColumn>
        <GridViewColumn Width="240" Header="Sub Position">
          <GridViewColumn.DisplayMemberBinding>
            <Binding Path="Sub_position" />
          </GridViewColumn.DisplayMemberBinding>
        </GridViewColumn>
      </GridView>
    </ListView.View>
  </ListView>
The class being loaded

Code: Select all

/// <summary>
	/// Class representing a stop
	/// </summary>
	public class StopItem
	{
		private string start_time;
		private string end_time;
		private string cause;
		private string section;
		private string position;
		private string sub_position;
		
		public StopItem(string start_time, string end_time, string cause, string section, string position, string sub_position)
		{
			this.start_time = start_time;
			this.end_time = end_time;
			this.cause = cause;
			this.section = section;
			this.position = position;
			this.sub_position = sub_position;
		}
		
		public string Start_time 
		{
			get { return this.start_time;}
		}
		
		public string End_time 
		{
			get { return this.end_time;}
		}
		
		public string Cause 
		{
			get { return this.cause;}
			set { this.cause = value;}
		}
		
		public string Section 
		{
			get { return this.section;}
			set { this.section = value;}
		}
		
		public string Position 
		{
			get { return this.position;}
			set { this.position = value;}	
		}
		
		public string Sub_position 
		{
			get { return this.sub_position;}
			set { this.sub_position = value;}	
		}
	}
And the dataload call

Code: Select all

	// Load data into grid
			ListView1.ItemsSource = Globals.Database_Functions.GetShiftStops();
The function Globals.Database_Functions.GetShiftStops() returns a List of StopItem.

Maybe you can modify it so you can have some use of it...