Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C#] Datagrid, ma può essere che fa così ca**re?

    Premessa, si parla di C# 2003 (framework 1.1).

    Cioè, dico, sono giorni che ho questa Datagrid in mezzo alle balle e più passa il tempo e più mi accorgo di quanto faccia ca**re.

    Allora, va bene che non riesco a trovare un cavolo di modo per recuperare tutti i dati che ho inserito in essa, mi sta anche bene, infatti io la riempo con una select col sistema del databinding, magari mi faceva comodo riprendere i dati da lì invece di rifare una select da capo per esportare i vari dati.

    Ora la croce, l'idiozia proprio.

    La datagrid permette il sorting, l'utente mi clicca sulla caption (dove ho messo i nomi delle colonne) e così facendo decide da sè quale ordine dare ai dati.

    Ora, visto che i dati dal datagrid non li posso recuperare (se potevo recuperarli potevo fare esportazioni in base all'ordinamento scelto dall'utente), di prendere il nome della colonna dalla caption non ne parliamo proprio, cavare il sangue dalle pietre è più facile, ma a questo punto mi dico: "Mi salvo da una parte una lista delle colonne, recupero il numero di colonna cliccato, applico un order by così".

    Non esiste modo di recuperare il numero di colonna cliccata dalla caption...

    Sono 40 minuti che mi studio ogni singolo dettaglio dell'oggetto Datagrid che mi ha passato l'evento click dello stesso, ma anche navigando le sottosezioni non c'è modo di sapere, nè la colonna, nè il sorting.

    Cosa me ne faccio io del sorting se poi non lo posso sfruttare in alcun modo se non per un semplice aspetto grafico!?!?

  2. #2
    Cioè, dico, quì si rasenta la follia pura, tramite un Trick che ho trovato sul web ecco in che modo riesco ad ottenere colonna e tipo di sorting.
    codice:
    		private void dataResult_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    		{
    			System.Drawing.Point pt = new Point(e.X, e.Y);
    			//MessageBox.Show(dataResult.HitTest(pt).Type.ToString());
    			if(dataResult.HitTest(pt).Type.ToString().Equals("ColumnHeader"))
    			{
    				if(SortCorrente==dataResult.HitTest(pt).Column)
    				{
    					if(SortDesc)
    						SortDesc=false;
    					else
    						SortDesc=true;
    				}
    				else
    				{
    					SortCorrente=dataResult.HitTest(pt).Column;
    					SortDesc=false;
    				}
    			}
    		}
    Premessa, SortCorrente e SortDesc sono due variabili esterne private, SortCorrente è int, SortDesc bool, al momento del riempimento del Datagrid devo essere impostati a -1 e false.

    Come vedete in poche parole devo recuperarmi il numero di colonna con un sotterfugio tramite le coordinate del mouse nel momento in cui ho cliccato sulla Datagrid per fare il sorting.

    Non è follia questa?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.