如何计算从数据源到新的“添加的列”的数据网格视图的列并仅刷新数据源

时间:2019-06-27 09:51:11

标签: c# oracle

我正在制作一个程序来监视或计数输出。我仅从数据源的datagridview MODEL,STATION和OUTPUT中选择了3列,如何在datagridview中添加2列(TARGET_OUTPUT和BALANCE_OUTPUT)?并通过Target_Output-Output计算余额? 在添加2列并计算后,如何在不影响添加的2个新列的情况下刷新旧数据?

为了从数据源中获取3列,我试图命名一个方法名称(Load_Data),然后单击按钮(LOAD DATA)调用这些方法。

我将代码添加到按钮(Add_Col)中添加列

现在我的问题是如何计算每一列。

,如果我单击我的按钮再次加载数据,如何仅加载3个原始列而不影响2个新列?

  //My method Load_Data
 void Load_Data()
    {
            conn.Open();
            cmd = new OleDbCommand("SELECT MODEL,STATION,COUNT 
(DISTINCT(MO_SN))AS OUTPUT from dqc342 where TEST_DTTM between to_date('" 
+ dtpFrom.Value.ToString("yyyyMMdd 08:00:00") + "','yyyymmdd 
hh24:mi:ss')and to_date('" + dtpTo.Value.ToString("yyyyMMdd 07:59:59") + 
"','yyyymmdd hh24:mi:ss')and station in('RC4','VMI2')and 
 LINE_NO='H5'GROUP BY LINE_NO,MODEL,STATION ORDER BY MODEL", conn);
            reader = cmd.ExecuteReader();
            if (reader.HasRows)
            {
                dt = new DataTable();
                dt.Load(reader);
                dataGridView_H5.DataSource = dt;
                conn.Close();
                reader.Close();
            }    
    }
//code for adding column
 private void Add_Col_Click(object sender, EventArgs e)
    {
        dataGridView_H5.Columns.Add("TARGET_COL", "TARGET_OUTPUT");
        dataGridView_H5.Columns.Add("BALANCE_COL", "BALANCE_OUTPUT");
    }

//code for calculating Balance ..OUTPUT-TARGET.
 private void Calculate_Click(object sender, EventArgs e)
    {
        if (dataGridView_H5.Rows.Count > 0)
        {
            for (int i = 0; i < dataGridView_H5.Rows.Count; i++)
            {
                int sum = 
Convert.ToInt32(dataGridView_H5.Rows[i].Cells[3].Value.ToString()) - 
Convert.ToInt32(dataGridView_H4.Rows[i].Cells[2].Value.ToString());
                dataGridView_H4.Rows[i].Cells[4].Value = sum.ToString();
            }
        }

单击计算按钮时出现错误索引超出范围,再次单击加载按钮时它删除了我在目标列中输入的所有数据。我只想从我的数据源中加载3个原始列。 / p>

0 个答案:

没有答案