è un bug noto, l'ObjectDataSorce non converte correttamente in tipo sting in DateTime, ne aveva parlato Andrea Boschin quà, avevo letto e incamerato.
sono passati i mesi tutto filava tranquillo, poi un giono appare sul forum questa domanda, i miei poveri neuroni relazionali, probabilmente non avevano assegnato chiavi univoche per i ricordi, non ricodavo nemmeno di ricordare.
quindi mi sono reinventato la ruota, ecco un altra soluzione alternativa al bug, che sonsiste nel creare una BoundFied personalizzata dove eseguito l'ovveride del metodo ExtractValuesFromCell, recuperato il valore, questo verrà parserizzato e inserito nel dictionary così da non rendere necessario l'intervento del ODS per la conversione.
public class MyDateTimeControlField : BoundField
{
public MyDateTimeControlField() { }
public override void ExtractValuesFromCell(IOrderedDictionary dictionary, DataControlFieldCell cell, DataControlRowState rowState, bool includeReadOnly)
{
Control _control = null;
string _dataField = this.DataField;
DateTime _date = DateTime.MinValue;
if (cell.Controls.Count > 0)
{
_control = cell.Controls[0];
TextBox _textBox = _control as TextBox;
if (_textBox != null)
{
try
{
_date = DateTime.Parse(_textBox.Text, CultureInfo.CurrentCulture.DateTimeFormat);
}
catch{}
}
}
if (dictionary.Contains(_dataField))
{
dictionary[_dataField] = _date;
}
else
{
dictionary.Add(_dataField, _date);
}
}
}
lo aveva già segnalato Andrea Boschin, ho solo aggiunto un altra soluzione alternativa.
ciao marco
Per inserire un commento, devi registrarti alla nostra community.






Stampa
Download 

Marco Leoncini wrote:
l'hai già segnalato su connect, così che lo correggano in futuro?
Continua »»» | Rispondi »»»