[ASP.NET]Formating problemen in geneste UserControls

Pagina: 1
Acties:

  • Riegstar
  • Registratie: Februari 2003
  • Niet online

Riegstar

Wadapatja!

Topicstarter
Ik ben aan het zoeken geweest maar ik heb nog geen oplossing gevonden voor mijn probleem.

De situatie:
Ik heb 2 usercontrols. Voor het gemak noem ik die UCparent en UCchild.
Zoals de namen al doen vermoeden zijn de usercontrols genest.
UCparent heeft een DataGrid en in die DataGrid zit oa UCchild.
UCchild bevat meerdere DataGrids met specifieke details.
Velden in de DataGrids zijn oa decimal, integer en datetime.
De velden met type datetime heb ik op de HTML-kant geformateerd als volgt:
code:
1
2
3
4
5
6
7
<asp:templatecolumn headertext="TGTDatum">
    <headerstyle width="100px"></headerstyle>
    <itemtemplate>
        <asp:Label id=lblTGTDatum runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.TGTDatum", "{0:dd-MM-yyyy}") %>'>
        </asp:label>
    </itemtemplate>
</asp:templatecolumn>

Nu heb ik het volgend probleem:
Toen de webapplicatie nog draaide als een ASPNET1.0-applicatie was er niks aan de hand en het heeft 2 jaar goed gewerkt.

Sinds een maand heb ik de applicatie omgezet naar een ASPNET1.1-applicatie.
Opzich werkt het prima op 1 ding na.
De datetime-velden worden nu niet meer geformateerd. Dus niet meer als DATUM maar als DATUM+TIJD. 14-09-2005 0:00:0 ipv 14-09-2005
De decimal-velden zijn nu 1000,00 geworden ipv 1000 en integer-velden zijn nu 1.000 ipv 1000.
Zelfs als ik in de Code-behind de String.Format in de ItemDataBound-event aanroep krijg ik hetzelfde resultaat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
private void po_Grid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    DataRowView row = e.Item.DataItem as DataRowView;

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Label lblTGTDatum = (Label)e.Item.FindControl("lblTGTDatum");
        if (row != null)
        {
            lblTGTDatum.Text = String.Format("{0:dd-MM-yyyy}", row["TGTDatum"]);
        }
    }
}

In de Web.config zitten geen "rare" dingen. Wel heb ik de culture gezet op deze manier:
code:
1
2
3
4
5
6
<system.web>
....
....
....
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="nl-NL" uiCulture="nl-NL"/>
</system.web>

Het formateren van de datetime-velden doe ik altijd op deze manier zowel bij ASPNET1.0 als bij ASPNET1.1.
code:
1
2
3
    lblTGTDatum.Text = row["TGTDatum"] == DBNull.Value
        ? String.Empty
        : Convert.ToDateTime(row["TGTDatum"]).ToShortDateString();

Dit is een work-around, maar daar zit ik niet op te wachten.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 18:54

TeeDee

CQB 241

Hmm, heeft je 1.1 install geen gekke dingen met je System Locale settings gedaan?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:33

mulder

ik spuug op het trottoir

Check de instellingen van Windows zelf eens

oogjes open, snaveltjes dicht


  • Riegstar
  • Registratie: Februari 2003
  • Niet online

Riegstar

Wadapatja!

Topicstarter
Dank voor snelle reactie.
Ik heb ff snel in de webapplicatie een webform gemaakt met een datagrid.
De datetime-velden worden wel goed geformateerd weergegeven.
Dat betekend dat het wel goed zit met de culture-instellingen van windows en Web.config.

Alleen binnen de "complexe" geneste controls werkt het dus niet.

@joopst: Wat wil daarmee zeggen? {0:dd-MM-yyyy} werkt wel bij mij, alleen niet binnen mijn controls.

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
ik dacht, je gebruikt '.ToShortDateString()' en decimal.tostring
als die verkeerd formatten dan kan je format dat die functie moet gebruiken instellen zodat ie format zoals jij het wilt. B)

ook met cijfers kan je instellen hoeveel cijfers er standaard achter de komma moeten komen.

Ik dacht, misschien zijn de 'standaard' instellingen veranderd met de 1.1 installatie (omdat het eerst wel werkte en nu niet) en is het op te lossen door deze zelf in te stellen.

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
ff wat code om mijn vorige post wat minder vaag te maken:
code:
1
2
3
4
    Dim cultureInfo As System.Globalization.CultureInfo
    cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture

    cultureInfo.NumberFormat.NumberDecimalDigits = 0

hiermee stel je in: 0 cijfers achter de komma :)

  • Riegstar
  • Registratie: Februari 2003
  • Niet online

Riegstar

Wadapatja!

Topicstarter
joopst schreef op vrijdag 15 juli 2005 @ 08:14:
ff wat code om mijn vorige post wat minder vaag te maken:
code:
1
2
3
4
    Dim cultureInfo As System.Globalization.CultureInfo
    cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture

    cultureInfo.NumberFormat.NumberDecimalDigits = 0

hiermee stel je in: 0 cijfers achter de komma :)
Kijk, daar heb ik wat aan. Maar de ,00 achter de decimals was niet zo hinderlijk.
Het is juist de datetime die problemen geeft..., en zoals ik al eerder had genoemd gebeurd dat alleen maar binnen de usercontrols.
Het is niet de bedoeling om mijn usercontrols te herschrijven.

  • Riegstar
  • Registratie: Februari 2003
  • Niet online

Riegstar

Wadapatja!

Topicstarter
#kick#
Ik heb een goede oplossing voor mn datetime probleem nog niet gevonden.

En trouwens als ik dat grapje van die CultureInfo en NumberFormat gebruik in de Global.asax dan krijg ik een foutmelding dat de property readonly is. M.a.w. ik krijg bij de decimals nogsteeds ,00.

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
zal ik jou eens een geweldige tip geven:

zet hem weer terug naar 1.0
Pagina: 1