ObjectDataSource bug.

di Marco Leoncini, in asp.net,

è 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);
}
}
}

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese