Trouble updating my datagrid in WPF

Posted by wrigley06 on Stack Overflow See other posts from Stack Overflow or by wrigley06
Published on 2012-11-12T02:12:56Z Indexed on 2012/11/15 17:00 UTC
Read the original article Hit count: 340

Filed under:
|
|
|
|

As the title indicates, I'm having trouble updating a datagrid in WPF. Basically what I'm trying to accomplish is a datagrid, that is connected to a SQL Server database, that updates automatically once a user enters information into a few textboxes and clicks a submit button. You'll notice that I have a command that joins two tables. The data from the Quote_Data table will be inserted by a different user at a later time. For now my only concern is getting the information from the textboxes and into the General_Info table, and from there into my datagrid. The code, which I'll include below compiles fine, but when I hit the submit button, nothing happens. This is the first application I've ever built working with a SQL Database so many of these concepts are new to me, which is why you'll probably look at my code and wonder what is he thinking.

    public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    public DataSet mds; // main data set (mds)

    private void Window_Loaded_1(object sender, RoutedEventArgs e)
    {
        try
        {
            string connectionString = Sqtm.Properties.Settings.Default.SqtmDbConnectionString;

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                //Merging tables General_Info and Quote_Data
                SqlCommand cmd = new SqlCommand("SELECT General_Info.Quote_ID, General_Info.Open_Quote, General_Info.Customer_Name,"
                                            + "General_Info.OEM_Name, General_Info.Qty, General_Info.Quote_Num, General_Info.Fab_Drawing_Num, "
                                            + "General_Info.Rfq_Num, General_Info.Rev_Num,  Quote_Data.MOA, Quote_Data.MOQ, "
                                            + "Quote_Data.Markup, Quote_Data.FOB, Quote_Data.Shipping_Method, Quote_Data.Freight, "
                                            + "Quote_Data.Vendor_Price, Unit_Price, Quote_Data.Difference, Quote_Data.Vendor_NRE_ET, "
                                            + "Quote_Data.NRE, Quote_Data.ET, Quote_Data.STI_NET, Quote_Data.Mfg_Time, Quote_Data.Delivery_Time, "
                                            + "Quote_Data.Mfg_Name, Quote_Data.Mfg_Location "
                                            + "FROM General_Info INNER JOIN dbo.Quote_Data ON General_Info.Quote_ID = Quote_Data.Quote_ID",
                                            connection);

                SqlDataAdapter da = new SqlDataAdapter(cmd);

                DataTable dt = new DataTable();

                da.Fill(dt);

                MainGrid.ItemsSource = dt.DefaultView;

                mds = new DataSet();

                da.Fill(mds, "General_Info");

                MainGrid.DataContext = mds.Tables["General_Info"];
            }
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        // renaming column names from the database so they are easier to read in the datagrid

        MainGrid.Columns[0].Header = "#";
        MainGrid.Columns[1].Header = "Date";
        MainGrid.Columns[2].Header = "Customer";
        MainGrid.Columns[3].Header = "OEM";
        MainGrid.Columns[4].Header = "Qty";
        MainGrid.Columns[5].Header = "Quote Number";
        MainGrid.Columns[6].Header = "Fab Drawing Num";
        MainGrid.Columns[7].Header = "RFQ Number";
        MainGrid.Columns[8].Header = "Rev Number";
        MainGrid.Columns[9].Header = "MOA";
        MainGrid.Columns[10].Header = "MOQ";
        MainGrid.Columns[11].Header = "Markup";
        MainGrid.Columns[12].Header = "FOB";
        MainGrid.Columns[13].Header = "Shipping";
        MainGrid.Columns[14].Header = "Freight";
        MainGrid.Columns[15].Header = "Vendor Price";
        MainGrid.Columns[16].Header = "Unit Price";
        MainGrid.Columns[17].Header = "Difference";
        MainGrid.Columns[18].Header = "Vendor NRE/ET";
        MainGrid.Columns[19].Header = "NRE";
        MainGrid.Columns[20].Header = "ET";
        MainGrid.Columns[21].Header = "STINET";
        MainGrid.Columns[22].Header = "Mfg. Time";
        MainGrid.Columns[23].Header = "Delivery Time";
        MainGrid.Columns[24].Header = "Manufacturer";
        MainGrid.Columns[25].Header = "Mfg. Location";

    }

    private void submitQuotebtn_Click(object sender, RoutedEventArgs e)
    {
        CustomerData newQuote = new CustomerData();

        int quantity;
        quantity = Convert.ToInt32(quantityTxt.Text);

        string theDate = System.DateTime.Today.Date.ToString("d");

        newQuote.OpenQuote = theDate;
        newQuote.CustomerName = customerNameTxt.Text;
        newQuote.OEMName = oemNameTxt.Text;
        newQuote.Qty = quantity;
        newQuote.QuoteNumber = quoteNumberTxt.Text;
        newQuote.FdNumber = fabDrawingNumberTxt.Text;
        newQuote.RfqNumber = rfqNumberTxt.Text;
        newQuote.RevNumber = revNumberTxt.Text;

        try
        {
            string insertConString = Sqtm.Properties.Settings.Default.SqtmDbConnectionString;

            using (SqlConnection insertConnection = new SqlConnection(insertConString))
            {
                insertConnection.Open();

                SqlDataAdapter adapter = new SqlDataAdapter(Sqtm.Properties.Settings.Default.SqtmDbConnectionString, insertConnection);

                SqlCommand updateCmd = new SqlCommand("UPDATE General_Info " + "Quote_ID = @Quote_ID, "
                                                    + "Open_Quote = @Open_Quote, " + "OEM_Name = @OEM_Name, " + "Qty = @Qty, "
                                                    + "Quote_Num = @Quote_Num, " + "Fab_Drawing_Num = @Fab_Drawing_Num, "
                                                    + "Rfq_Num = @Rfq_Num, " + "Rev_Num = @Rev_Num "
                                                    + "WHERE Quote_ID = @Quote_ID");

                updateCmd.Connection = insertConnection;

                System.Data.SqlClient.SqlParameterCollection param = updateCmd.Parameters;

                //
                // Add new SqlParameters to the command.
                //
                param.AddWithValue("Open_Quote", newQuote.OpenQuote);
                param.AddWithValue("Customer_Name", newQuote.CustomerName);
                param.AddWithValue("OEM_Name", newQuote.OEMName);
                param.AddWithValue("Qty", newQuote.Qty);
                param.AddWithValue("Quote_Num", newQuote.QuoteNumber);
                param.AddWithValue("Fab_Drawing_Num", newQuote.FdNumber);
                param.AddWithValue("Rfq_Num", newQuote.RfqNumber);
                param.AddWithValue("Rev_Num", newQuote.RevNumber);

                adapter.UpdateCommand = updateCmd;

                adapter.Update(mds.Tables[0]);

                mds.AcceptChanges();
            }
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }

Thanks in advance to anyone who can help, I really appreciate it,

  • Andrew

© Stack Overflow or respective owner

Related posts about c#

Related posts about sql-server