我有,我想從兩個不同的列綜上所述值到第三列一個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