2017-10-06 4 views
-4

Je développe une application winform en utilisant C# et l'événement double-clic de cellule Gridview n'est pas déclenché. J'ai donné ci-dessous mon code sourceL'événement double clic de cellule Giridview n'est pas déclenché?

private void gridView2_DoubleClick(object sender, EventArgs e) 
    { 
     try 
     { 
      GridView view = (GridView)sender; 
      DataTable getGrid = (DataTable)Popup_Grid.DataSource; 
      int RowVal = gridView2.FocusedRowHandle; 
      string FieldVal = ERPModule.isnull(Convert.ToString(gridView2.GetRowCellValue(RowVal, gridView2.Columns["DisplayName"])), ""); 

      if (RowVal != -1) 
      { 
       string SelectionStart = richTextBox1.Text.Substring(0, richTextBox1.SelectionStart); 
       string SelectionEnd = richTextBox1.Text.Substring(richTextBox1.SelectionStart, richTextBox1.Text.Length - richTextBox1.SelectionStart); 
       richTextBox1.Text = SelectionStart + FieldVal + SelectionEnd; 
       Displaydata_Popup_Container.Parent.FindForm().Close(); 
      } 
      else 
      { 
       Displaydata_Popup_Container.Parent.FindForm().Close(); 
      } 
     } 
     catch (Exception ex) 
     { 
      Utility.ErrorLog.WriteToFile(DataFile.errorFile, "PrintList : gridView2_DoubleClick()", ex.Message); 
     } 

    } 
+2

Ce que vous voulez simplifier – iamsankalp89

+0

Y a-t-il des possibilités de passer des messages de type? Variable d'objet et champs Modification uniquement. donc s'il vous plaît laissez-moi savoir toutes les possibilités pour simplifier ce code – Raj

Répondre

2

Extrait logique commune à la fonction (possible méthode d'extension)

public static class DataTableExtensions 
{ 
    public static int CountChequeStatusOf(this DataTable table, string condition) 
    { 
     var count = table.Compute("Count(ChequeStatus)", $"ChequeStatus = '{condition}'"); 
     return count == DbNull.Value ? 0 : (int)count; 
    } 
} 

Ensuite, "réutiliser" il

var table = (DataTable)grid_cheque.DataSource; 

this.lblNew.Text = table.CountChequeStatusOf("New").ToString(); 
this.lbl_Issued.Text = table.CountChequeStatusOf("Issued").ToString(); 
this.lblCancel.Text = table.CountChequeStatusOf("Cancelled").ToString(); 
this.lbldishonour.Text = table.CountChequeStatusOf("DisHonour").ToString(); 
+0

J'ai utilisé votre code et je reçois une erreur comme "Méthode d'extension doit être définie dans une classe statique de premier niveau; DataTableExtensions est une classe imbriquée" – Raj

+0

@Raj -pretty effacer message d'erreur;). Mettez la classe 'DataTableExtensions' en dehors de votre classe actuelle ou dans le fichier séparé. – Fabio

+0

Oui, mais j'ai montré une erreur DBNull n'existe pas dans le contenu actuel. S'il vous plaît pouvez-vous me donner brièvement? – Raj