Alex's Weblog

Weblog di Ermanno Goletto (Codename Alex - A Learning EXperience)
posts - 438, comments - 4214, trackbacks - 294

My Links

News

Il blog è stato
trasferito al
 seguente link:


DevAdmin Blog

Add my blog to Live

Foto

Curriculum Vitae


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Logo MCTS

Logo MCSA

Logo MCP

Logo Microsoft Certified Business Management Solutions Professional

Microsoft Certified Business Management Solutions Specialist


Logo UGIdotNET UGIdotNET Contributor


Logo UGISS UGISS Contributor


Logo SysAdmin.it SysAdmin.it Staff


Article Categories

Archives

Post Categories

Blogs

Database

Development

Friends

IT

Knowledge Base

Links

MBS

MCP

MVP Sites

User Groups

Virtualization

Persistere il valori di una proprietà custom di una DataGridViewColumn custom

Dovendo realizzare una DataGridViewColumn di tipo MaskedTextBox e NumericUpDown ho fatto un salto su Msdn dove ho trovato questo esempio per colonne MaskedTextBox:

DataGridView Custom Column Sample 
http://msdn2.microsoft.com/en-us/library/ms180996.aspx

tutto bene ma quando da IDE di tenta di impostare le proprietà custom il valore non viene memorizzato.

Dopo aver letto questo thread su Microsoft Connect:
DataGridView Column Editor code generation issue
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=108961
stavo quasi per considerarlo un bug, ma ne ero veramente poco convinto, infatti sulle colonne native del framework non ci sono problemi.

Poi ho provato questo esempio:
Sviluppo di una cella e colonna NumericUpDown personalizzate per il controllo DataGridView
http://www.microsoft.com/italy/msdn/library/framework/winf_numericupdown.mspx
e qui il problema non si presentava e dopo aver confrontato il codice e fatto vari tentativi ho capito che la soluzione stava nell'implementare il metodo Clone nella DataGridViewTextBoxCell custom.

Public Overrides Function Clone() As Object
  Dim dataGridViewCell As MyDataGridViewNumericUpDownCell = CType(MyBase.Clone, MyDataGridViewNumericUpDownCell)
  If (Not (dataGridViewCell) Is Nothing) Then
    dataGridViewCell.DecimalPlaces = Me.decimalPlacesValue
    dataGridViewCell.Increment = Me.incrementValue
    dataGridViewCell.Maximum = Me.maximumValue
    dataGridViewCell.Minimum = Me.minimumValue
    dataGridViewCell.ThousandsSeparator = Me.thousandsSeparatorValue
  End If
  Return dataGridViewCell
End Function

Senza questo metodo le proprietà della colonna DecimalPlaces, Increment, Maximum, Minimum, ThousandsSeparator non vengono memorizzare se modificate da IDE.

Secondo me vedendo vari esempi in rete di implementazione di colonne custom si fatto un passo avanti rispetto al DataGrid, ma non è ancora una passeggiata realizzare delle buone column custom, insomma guardando l'implementazione del secondo link si vede che il codice da scrivere è una vagonata e in alcuni casi si fa uso di API.
Morale c'è sempre la sensazione di avere fatto una column che si può dare per buona solo sulla base dei test effettuati e se la si deve modificare si spera di non introdurre nuovi bug.

Credo che oltre agli esempi servirebbero linee guida a cui attenersi rigorosamente per la creazione di Column custom (cosa implementare e sopratutto perchè).

Print | posted on giovedì 12 ottobre 2006 17:08 | Filed Under [ Code & Snippet .NET Framework 2.0 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET