user5286952
user5286952

Reputation:

how to add the value in a variable to a datatable

I have a DataTable called datatablebuy. I need to insert a value called avg to the DataTable and display it in the girdview. I have obtained the value for datatablebuy from database called transac. How can I add the value in the variable "avg" to the datatablebuy. I am using C# for coding, The code looks as follows :

protected void Button1_Click(object sender, EventArgs e)
{
     try
     {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            conn.Open();
            var sql = @"select scriptname,accnum,Quantity,price from transac where transactio = 'Sell' and scriptname = '" + TextBox2.Text + "' and accnum ='" + TextBox1.Text + "'";
            var sqll = @"select scriptname,accnum,Quantity,price from transac where transactio = 'Buy' and scriptname ='" + TextBox2.Text + "' and accnum ='" + TextBox1.Text + "'";
            var da = new SqlDataAdapter(sqll, conn);
            var dataTablebuy = new DataTable();
            da.Fill(dataTablebuy);
            var dataAdapter = new SqlDataAdapter(sql, conn);
            var dataTablesell = new DataTable();
            dataAdapter.Fill(dataTablesell);
            foreach (DataRow row in dataTablesell.Rows)
            {
                foreach (DataRow rw in dataTablebuy.Rows)
                {
                    if (double.Parse(rw["Quantity"].ToString()) > double.Parse(row["Quantity"].ToString()))
                    {
                        rw["Quantity"] = double.Parse(rw["Quantity"].ToString()) - double.Parse(row["Quantity"].ToString());
                        row["Quantity"] = 0;
                    }
                    else
                    {
                        row["Quantity"] = double.Parse(row["Quantity"].ToString()) - double.Parse(rw["Quantity"].ToString());
                        rw["Quantity"] = 0;
                    }
                }
            }
            float denom = 0;
            float numer = 0;
            float avg = 0;
            foreach (DataRow rw in dataTablebuy.Rows)
            {
                denom = denom + int.Parse(rw["Quantity"].ToString());
                numer = numer + (int.Parse(rw["Quantity"].ToString()) * int.Parse(rw["price"].ToString()));
                avg = numer / denom;

            }
            GridView1.DataSource = dataTablebuy;
            GridView1.DataBind();
            ViewState["dataTablebuy"] = dataTablebuy;
            GridView1.Visible = true;
            Response.Write("average " +avg.ToString());                
     }
     catch (System.Data.SqlClient.SqlException sqlEx)
     {
         Response.Write("error" + sqlEx.ToString());
     }
     catch (Exception ex)
     {
         Response.Write("error" + ex.ToString());
     }    
}

Upvotes: 1

Views: 2044

Answers (3)

Amir Shrestha
Amir Shrestha

Reputation: 451

First add avg column into your dataTablebuy DataTable then assign your avg variable to avg column.

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        SqlConnection conn = new      SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        conn.Open();
        var sql = @"select scriptname,accnum,Quantity,price from transac where transactio = 'Sell' and scriptname = '" + TextBox2.Text + "' and accnum ='" + TextBox1.Text + "'";
        var sqll = @"select scriptname,accnum,Quantity,price from transac where transactio = 'Buy' and scriptname ='" + TextBox2.Text + "' and accnum ='" + TextBox1.Text + "'";
        var da = new SqlDataAdapter(sqll, conn);
        var dataTablebuy = new DataTable();
        da.Fill(dataTablebuy);
        dataTableBuy.Columns.Add("Avg",typeof(float));
        var dataAdapter = new SqlDataAdapter(sql, conn);
        var dataTablesell = new DataTable();
        dataAdapter.Fill(dataTablesell);
        foreach (DataRow row in dataTablesell.Rows)
        {
            foreach (DataRow rw in dataTablebuy.Rows)
            {
                if (double.Parse(rw["Quantity"].ToString()) > double.Parse(row["Quantity"].ToString()))
                {
                     rw["Quantity"] = double.Parse(rw["Quantity"].ToString()) - double.Parse(row["Quantity"].ToString());
                     row["Quantity"] = 0;

 }
                else
                {
                    row["Quantity"] = double.Parse(row["Quantity"].ToString()) - double.Parse(rw["Quantity"].ToString());
                    rw["Quantity"] = 0;

                }
            }
        }
        float denom = 0;
        float numer = 0;
        float avg = 0;
        foreach (DataRow rw in dataTablebuy.Rows)
        {
            denom = denom + int.Parse(rw["Quantity"].ToString());
            numer = numer + (int.Parse(rw["Quantity"].ToString()) * int.Parse(rw["price"].ToString()));
            avg = numer / denom;
            rw["Avg"] = avg;
        }
        GridView1.DataSource = dataTablebuy;
        GridView1.DataBind();
        ViewState["dataTablebuy"] = dataTablebuy;
        GridView1.Visible = true;
        Response.Write("average " +avg.ToString());

    }
    catch (System.Data.SqlClient.SqlException sqlEx)
    {
        Response.Write("error" + sqlEx.ToString());
    }
    catch (Exception ex)
    {
        Response.Write("error" + ex.ToString());
    }

}

Upvotes: 0

Kandarp
Kandarp

Reputation: 392

dataTablebuy.Columns.Add("avg", typeof(int));

foreach (DataRow rw in dataTablebuy.Rows)
{
   rw["avg"] = //Pleaase assign average value here
}       

i hope this will work.

Upvotes: 1

Dgan
Dgan

Reputation: 10295

after

dataAdapter.Fill(dataTablesell);

you have to add column to DataTable like this

dataTablesell.Columns.Add("avg",typeof(decimal));

then inside

foreach (DataRow row in dataTablesell.Rows)
            {
                foreach (DataRow rw in dataTablebuy.Rows)
                {
                 row["avg"]=0;
                 //set your avg value here
                }
            }

Upvotes: 1

Related Questions