C# 动态gridview列自动计算
我有一个Gridview,在templatefields中有文本框,我在其中动态添加列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
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)