动态gridview列自动计算

时间:2011-05-31 09:48:07

标签: 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.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。但我不知道如何去做。有任何想法吗??

2 个答案:

答案 0 :(得分:1)

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
    }
}

试试这个

答案 1 :(得分:0)

假设用户编辑了这些值,您可以将自己的处理程序添加到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;
        }
     }