2014-12-01 3 views
0

Мне нужно установить значение столбца в datatable как сумму двух других столбцов в datatable. Я попробовал столбец выражения и отлично работает. Но проблема в том, что значение столбца выражения не обновляется всегда. Предположим, что A, B - это два столбца в datatable, и сумма этих двух столбцов должна быть показана в столбце C. Когда при изменении значения B то значение «C» столбцов также получение changed.But не тогда, когда столбец «A» изменяетсяИзменение значения столбца выражения datatable expression

DataTable dt1 = new DataTable(); 
dt1.Columns.Add("A", typeof(decimal)); 
dt1.Columns.Add("B", typeof(decimal)); 
dt1.Columns.Add("C", typeof(decimal), "A+B"); 
myGridView.Datasource = dt1; 
+1

Вы можете поставить некоторые из вашего кода здесь ? Трудно догадаться с какой-либо точностью, где вы ошибетесь, не видя этого. –

+1

Кажется, что, как я написал в своем ответе, вы неправильно используете столбец выражения, я считаю, что он предназначен только для одного столбца, а не для двух. Для двух вы должны использовать DataColumn ... »Получает или задает выражение, используемое для фильтрации строк, вычисления значений в столбце или создания столбца агрегата». –

ответ

1

Это догадка, не видя ваш код, но кажется, что если вы используете Compute, то вам вполне возможно, не следует использовать столбец выражения для этого, скорее вы должны использовать DataColumn ... Взято с here

«Если вы должны выполнить операцию над двумя или несколькими столбцами, вы должны создать DataColumn, установить его Express ионного свойства к соответствующему выражению и использовать обобщенное выражение в полученном столбце. В этом случае, учитывая DataColumn с именем «общей», а свойство Expression установлен следующим образом: «Количество * UnitPrice»

+0

Вопрос обновляется с образцом кода. Пожалуйста, посмотрите. Спасибо. –

0

Если идти, как это:

DataTable dt1 = new DataTable(); 
dt1.Columns.Add("A", typeof(decimal)); 
dt1.Columns.Add("B", typeof(decimal)); 
dt1.Columns.Add("C", typeof(decimal)); 
foreach (DataRow dr in dt1.Rows) 
     { 
      dr[2] = Convert.ToDecimal(dr[0]) + Convert.ToDecimal(dr[1]); 
     } 
myGridView.Datasource = dt1;