Search code examples
c#wpfxamlvisual-studio-2013windows-store-apps

Creating a .csv file for my esurvey application. How do I start?


I'm having trouble with coding my Esurvey application(using Windows Store C# XAML) and I really need help. I need to create a .csv database which contains all results(radiobutton selections and text inputs) but I'm not sure where to even start.

Can someone help me with this? I'm using Visual Studio Community 2013.

using FYPPrototype1.Common;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Popups;

// The Basic Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234237

namespace FYPPrototype1
{
/// <summary>
/// A basic page that provides characteristics common to most applications.
/// </summary>
/// 


public sealed partial class SurveyPage1 : Page
{

    private NavigationHelper navigationHelper;
    private ObservableDictionary defaultViewModel = new ObservableDictionary();

    /// <summary>
    /// This can be changed to a strongly typed view model.
    /// </summary>
    public ObservableDictionary DefaultViewModel
    {
        get { return this.defaultViewModel; }
    }

    /// <summary>
    /// NavigationHelper is used on each page to aid in navigation and 
    /// process lifetime management
    /// </summary>
    public NavigationHelper NavigationHelper
    {
        get { return this.navigationHelper; }
    }


    public SurveyPage1()
    {
        this.InitializeComponent();
        this.navigationHelper = new NavigationHelper(this);
        this.navigationHelper.LoadState += navigationHelper_LoadState;
        this.navigationHelper.SaveState += navigationHelper_SaveState;
    }

    /// <summary>
    /// Populates the page with content passed during navigation. Any saved state is also
    /// provided when recreating a page from a prior session.
    /// </summary>
    /// <param name="sender">
    /// The source of the event; typically <see cref="NavigationHelper"/>
    /// </param>
    /// <param name="e">Event data that provides both the navigation parameter passed to
    /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and
    /// a dictionary of state preserved by this page during an earlier
    /// session. The state will be null the first time a page is visited.</param>
    private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
    {
        if (e.PageState != null && e.PageState.ContainsKey("rbNumber1") && e.PageState.ContainsKey("rbNumber2") && e.PageState.ContainsKey("rbNumber3") && e.PageState.ContainsKey("rbNumber4"))
        {
            radioExcellent.IsChecked = (bool)e.PageState["rbNumber1"];
            radioGood.IsChecked = (bool)e.PageState["rbNumber2"];
            radioPoor.IsChecked = (bool)e.PageState["rbNumber3"];
            radioAverage.IsChecked = (bool)e.PageState["rbNumber4"];
        }
    }

    /// <summary>
    /// Preserves state associated with this page in case the application is suspended or the
    /// page is discarded from the navigation cache.  Values must conform to the serialization
    /// requirements of <see cref="SuspensionManager.SessionState"/>.
    /// </summary>
    /// <param name="sender">The source of the event; typically <see cref="NavigationHelper"/></param>
    /// <param name="e">Event data that provides an empty dictionary to be populated with
    /// serializable state.</param>
    private void navigationHelper_SaveState(object sender, SaveStateEventArgs e)
    {
        e.PageState["rbNumber1"] = radioExcellent.IsChecked;
        e.PageState["rbNumber2"] = radioGood.IsChecked;
        e.PageState["rbNumber3"] = radioPoor.IsChecked;
        e.PageState["rbNumber4"] = radioAverage.IsChecked;
    }

    #region NavigationHelper registration

    /// The methods provided in this section are simply used to allow
    /// NavigationHelper to respond to the page's navigation methods.
    /// 
    /// Page specific logic should be placed in event handlers for the  
    /// <see cref="GridCS.Common.NavigationHelper.LoadState"/>
    /// and <see cref="GridCS.Common.NavigationHelper.SaveState"/>.
    /// The navigation parameter is available in the LoadState method 
    /// in addition to page state preserved during an earlier session.

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        navigationHelper.OnNavigatedTo(e);
    }

    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        navigationHelper.OnNavigatedFrom(e);
    }

    #endregion

    private async void Button_S1_S2(object sender, RoutedEventArgs e)
    {
        if (radioExcellent.IsChecked != true && radioGood.IsChecked != true && radioAverage.IsChecked != true && radioPoor.IsChecked != true)
        {
            MessageDialog md = new MessageDialog("Please select an option before proceeding!");
            await md.ShowAsync();
        }

        else
        {
            this.Frame.Navigate(typeof(SurveyPage2));
        }
    }
}
}

Here is a screenshot of my application in case you need a reference.

Here is a screenshot of my application in case you need a reference.

enter image description here

This is the output that my teacher wants but I have no idea how to make it as shown :(


Solution

  • You can do it this way where "greetingOutputText" is the key

    private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
            {
                // Restore values stored in session state.
                if (e.PageState != null && e.PageState.ContainsKey("greetingOutputText"))
                {
                    greetingOutput.Text = e.PageState["greetingOutputText"].ToString();
                }
            }
    
    
    
    private void navigationHelper_SaveState(object sender, SaveStateEventArgs e)
            {
                e.PageState["greetingOutputText"] = greetingOutput.Text;
    
            }
    

    This link will help you.