Tema: Re: DataGridView .net 2.00 - SharpDevelop 3.2
Autorius: Jornada Del Muerto
Data: 2011-01-06 16:58:03
    Na kazkiek analizavau ir ne itin reiksmingose ir nesusijusiose su problema vietose kai kur siek tiek optimizavau koda po to,  bet tos vietos neanalizuoja kur man reikia.

    Visumoje ten buna row.BeginEdit(); vyksta priskyrimas siokiu tokiu duomenu ir kai darai row.EndEdit() ivyksta baisus stabdis, DataGrid DataTable i kuria viskas rasoma ivedant nesujungta su duomenu baze, nevyksta realiam laike jokie DB naujinimai niekas, dirbama su disconnected zodynu DataTable'ais, ten tiesiog viskas disconnected nes veliau kishama i webservisa, visas imanomas pradebuginti ir paziureti vietas praejau, tikrai ne jos :(

    Logikos kazkokios kitos kazka darancios su duomenim nera irgi, yra praktiskai 2 eventai handlinti:

  private void GridInput_DataError (object sender, DataGridViewDataErrorEventArgs e)
  {
   Debug.Print ("ROW[" + e.RowIndex.ToString () + "], COL[" + e.ColumnIndex.ToString () + "] " + e.Exception.Message);
  }


  void Row_Changing (object sender, DataRowChangeEventArgs e)
  {
   if (!_InternalRowChanges &&
    (e.Action == DataRowAction.Change ||
    e.Action == DataRowAction.Add))
   {
    _InternalRowChanges = true;    // tai flag'as kuris apsaugo nuo cross call'u

    Debug.Print ("Row_Changing:Start:" + DateTime.Now.ToString ());
    ValidateInputRow (e.Row);
    Debug.Print ("Row_Changing:End:  " + DateTime.Now.ToString ());

    _InternalRowChanges = false;
   }
  }


  bool ValidateInputRow (DataRow row)
  {
   string errors = string.Empty;

   row.BeginEdit ();

    /*
     * DATA PROCESSINIMAS CIA IR IVAIRUS PRISKYRIMAI row reiksmiu
     */

   if (!row.RowError.Equals (errors))
   {
    row.RowError = errors;
   }

   row.EndEdit ();    <<<< === VA CIA GAUNAMAS BAISUS STABDIS
   
   // no errors all ok then
   return string.IsNullOrEmpty (errors);
  }


1. Pastebejau tik tai, kad stabdo redaguojant daug trumpiau jei kraunu ne 5300 irasu, o 1000;

2. Ir dar pamenu seniau vienas table columnas buvo blogai apdirbamas ta prasme likdavo tuscias o ten Not Null tai paredagavus DataRow man iskviesdavo 5300 kardu Data_Error eventa, ta prasme galiu beveik prisiekt kad paredagavus 1 DataRow DataGridView bega per visus 5300 datagrid row'u ir visiem daro savo validacija....


P.S. Del to Sharp Develop, tai visai patiko, nors metinejo man jis exceptionus, bet buvau tapati projekta atsidares tiek su visual studio tiek su juo tai tikriausiai del to, tiesiog sis projektas debuginant reikalauja multiple projects start (Webserviso ir pacio kliento), o to neradau kaip padaryt su SharpDevelop tai webservisa teko paleidinet is VS, o viskas vienam solution, bendri dll ir t.t...

    Dar del versijavimo sistemos maciau nepalaikomas SourceSafe, bet palaikomas kazkoks kitas, tai reiks pasiziureti, tai versijavimo sistemai butu didelis pliusas jei neskleidzia visko i daug failu laikant versijas, nes kai ju daug labai sunku greitai nubackupint, pvz galimo PC crash metu... kada laikas svarbu, o tapati didi daug mazu failu daug leciau kopijuoja visada nei kelis didelius to pacio dydzio.

Lekiu toliau dirbti :)
JDM.