Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态gridview列自动计算_C#_Asp.net_Gridview - Fatal编程技术网

C# 动态gridview列自动计算

C# 动态gridview列自动计算,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个Gridview,在templatefields中有文本框,我在其中动态添加列 protected void grid() { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("SerialNumber", typeof(string))); dt.Columns.Add(new DataColumn("Material", typeof(string))); dt.Colu

我有一个Gridview,在templatefields中有文本框,我在其中动态添加列

 protected void grid()
 {
    DataTable dt = new DataTable();

    dt.Columns.Add(new DataColumn("SerialNumber", typeof(string)));
    dt.Columns.Add(new DataColumn("Material", typeof(string)));
    dt.Columns.Add(new DataColumn("Bags", typeof(string)));
    dt.Columns.Add(new DataColumn("GrossWt", typeof(string)));
    dt.Columns.Add(new DataColumn("TareWt", typeof(string)));
    dt.Columns.Add(new DataColumn("NetWt", typeof(string)));
    dt.Columns.Add(new DataColumn("BillWt", typeof(string)));

    DataRow dr = dt.NewRow();
    dt.Rows.Add(dr);
    dr["SerialNumber"] = 1;

    GridView1.DataSource = dt;
    GridView1.DataBind();                      
}
我需要让NetWt列使用GrossWt和TareWt列自动计算值。公式应为(grosswt-tarewt)/1000。但是我不知道该怎么做。有什么想法吗

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[5] = (e.Row.Cells[3].Text - e.Row.Cells[4].Text)/1000
    }
}

尝试此操作

假设用户编辑了值,您可以将自己的处理程序添加到CellValidated事件中,然后对值执行任意操作:

    myDataGridView.CellValidated += new System.Windows.Forms.DataGridViewCellEventHandler(myDataGridView_CellValidated);

    [...]
    private void myGridView_CellValidated(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == myGridView.Columns["GrossWt"].Index){
            myGridView.Rows[e.Index].Cells["NewWT"].Value = (
                myGridView.Rows[e.Index].Cells["GrossWT"].Value -
                myGridView.Rows[e.Index].Cells["TareWT"].Value ) /1000;
        }
     }

我考虑过这一点…但这不会从文本框中获取空值吗??在没有回发的情况下,它将如何显示计算出的值?它在行数据绑定上计算它们,它正在工作。试试看。。。。它将在绑定行后触发,因此它没有空值。它不需要回发!嘿,阿德里安…我无法将我的单元格值转换为int,上面的代码对我来说有一个错误。您确定单元格中的值可以转换为整数吗?创建gridview的单元格时,应为其指定正确的格式,以便只能输入整数。(仅当值有效时调用CellValidated)