[ Igor Gajic @ 23.07.2008. 08:08 ] @

Imam dve kolone u tabeli, i kolonu stanje koja se izracunava na osnovu prethodne dve:

Ulaz | Izlaz | Stanje
-----------------------------------
5 | 0 | 5
-----------------------------------
0 | 3 | 2
-----------------------------------
1 | 0 | 3
-----------------------------------
0 | 2 | 1
-----------------------------------


kolone ulaz i izlaz postoje u bazi podataka, dok trecu bi trebalo da izracunam u letu,

prvo resenje koje mi je palo na pamet je da izracunam preko SQL-a u upitu, ali

to mi ne odgovara jer koristim i BindingSource.Filter u kodu....

Da li je moguce izracunati trecu kolonu preko computed column i Expression property-a u DataTable.

Ako nije, da li neko ima neko relativno lakse resenje?
[ deerbeer @ 23.07.2008. 08:31 ] @
http://msdn.microsoft.com/en-u...acolumn.expression(VS.71).aspx
[ Igor Gajic @ 23.07.2008. 08:36 ] @
Ma znam kako se radi sa Expression kolonama, ali mi formula za ovaj problem izmice......
[ marko1981 @ 23.08.2008. 01:08 ] @
Vidim da je pitanje staro vec mesec dana, ali mozda ipak posluzi nekome za nesto...

Code:


private int func(int ulaz, int izlaz)
{
   // 
   // add function
   //
}

// u kodu konstruktora rucno ili kroz Design view dodaj handler metodu za CellFormating event
this.dataGrid.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dataGridView_CellFormatting);

private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
   DataGridView dataGridView = (DataGridView)sender;

   if (dataGridView.Columns[e.ColumnIndex].DataPropertyName == "Stanje") // odnosno, kako se vec zove DataProperty za ciljanu kolonu
   {
      try
      {
         int ulaz = Convert.ToInt32(this.dataGridView.Rows[e.RowIndex].Cells["Ulaz"].Value);
         int izlaz = Convert.ToInt32(this.dataGridView.Rows[e.RowIndex].Cells["Izlaz"].Value);
         e.Value = func(ulaz, izlaz);
      }
      catch (Exception exc)
      {
         e.Value = "n/a";
      }

      // ovde mozes i da postavljas bilo koji parametar CellStyle-a za ovu celiju ako hoces na osnovu ostalih vrednosti u redu ili slicno, kao na primer
      // da vrednosti koje ne izracunaju lepo zbog nekog exception-a odozgo, ispisu crvenim fontom "n/a"

      e.CellStyle.ForeColor = (Convert.ToString(e.Value).Equals("n/a") ? Color.Red : Color.Black);

      e.FormattingApplied = true;
   }
}


Napomena: e.Value je tipa object, i prihvatice svaki tip (int, string... a i sliku, ako treba)...