我有,我想从两个不同的列综上所述值到第三列一个DataGridView。计算中的DataGridView列
实施例的DataGridView:
A B Total
1 2 3
25 35 60
5 -5 0
我要添加(A + B)合计,只是在A & B column
输入值或离开当前行之后。并且还希望将Total Column设置为ReadOnly
。
我有,我想从两个不同的列综上所述值到第三列一个DataGridView。计算中的DataGridView列
实施例的DataGridView:
A B Total
1 2 3
25 35 60
5 -5 0
我要添加(A + B)合计,只是在A & B column
输入值或离开当前行之后。并且还希望将Total Column设置为ReadOnly
。
你可以做到这一点的CellValidatedEvent,你可以使用同样的方法来RowValidated:
private void dataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) {
if (e.RowIndex > -1) {
DataGridViewRow row = dataGridView.Rows[e.RowIndex];
string valueA = row.Cells[columnA.Index].Value.ToString();
string valueB = row.Cells[columnB.Index].Value.ToString();
int result;
if (Int32.TryParse(valueA, out result)
&& Int32.TryParse(valueB, out result)) {
row.Cells[columnTotal.Index].Value = valueA + valueB;
}
}
}
您可以在设计器中设置列只读,或者是这样的:
dataGridView.Columns["Total"].ReadOnly = true
同意,也可以在CellEndEdit事件中完成... – Reniuz 2011-05-23 13:15:35
感谢名单非常........ – 2011-05-23 13:19:36
如果使用数据绑定使用Eval
比U可以在那里创建一个方法,那么只需求和这两个值。
喜欢
对于列A
<ItemTemplate>
<%# Eval("A")%>
</ItemTemplate>
对B列
<ItemTemplate>
<%# Eval("B")%>
</ItemTemplate>
总
<ItemTemplate>
<%# GetTotal(Eval("A"),Eval("B")) %>
</ItemTemplate>
对于总方法
private string GetTotal(object A,object B)
{
return (A+B).ToString();
}
希望这会帮助你。
这是一个工作示例:
public partial class Form1 : Form
{
DataGridView _calcDataGridView;
public Form1()
{
InitializeComponent();
_calcDataGridView = new DataGridView();
this.Controls.Add(_calcDataGridView);
_calcDataGridView.Dock = DockStyle.Fill;
_calcDataGridView.Name = "CalcDataGridView";
_calcDataGridView.CellEndEdit += Calculate;
var aColumn = new DataGridViewTextBoxColumn();
aColumn.Name = "AColumn";
aColumn.HeaderText = "A";
_calcDataGridView.Columns.Add(aColumn);
var bColumn = new DataGridViewTextBoxColumn();
bColumn.Name = "BColumn";
bColumn.HeaderText = "B";
_calcDataGridView.Columns.Add(bColumn);
var totalColumn = new DataGridViewTextBoxColumn();
totalColumn.Name = "TotalColumn";
totalColumn.HeaderText = "Total";
totalColumn.ReadOnly = true;
_calcDataGridView.Columns.Add(totalColumn);
}
private void Calculate(object sender, DataGridViewCellEventArgs e)
{
object a = _calcDataGridView.CurrentRow.Cells["AColumn"].Value;
object b = _calcDataGridView.CurrentRow.Cells["BColumn"].Value;
double aNumber = 0;
double bNumber = 0;
if (a != null)
aNumber = Double.Parse(a.ToString());
if (b != null)
bNumber = Double.Parse(b.ToString());
_calcDataGridView.CurrentRow.Cells["TotalColumn"].Value = aNumber + bNumber;
}
}
您可以轻松地做到这一点
但是你应该有一个数据集或本地数据库连接,如SQL 我会假设你知道它并将其命名为 Totaldataset。
很容易做到,我知道一切都太迟了答案,但也许它帮助一些新的读者。
Datacolumn column = new Datacolumn();
column.Columnname = "Total";
Totaldataset.Tables[0].Columns.["Total"].Expression = "a+b";
DataColumn的列=新的DataColumn(); 列。 Columnname =“Total”; Totldataset.tables [0] .coulmns。[“Total”]。Expression =“a + b”; – 2015-08-27 19:59:26
你可以在任何事件上使用它,比如添加到按钮等等。 – 2015-08-27 20:01:25
谢谢slfan的帮助:) – 2015-08-27 20:32:40
你结合这一个DataTable? – 2011-05-23 12:46:52
不,我不绑定这个任何数据库或表,价值由用户输入。 – 2011-05-23 12:49:02
你试过dataGridView.Columns [“Total”]。ReadOnly = true;使列只读? – Reniuz 2011-05-23 12:59:57