Avatar billede area404 Nybegynder
19. oktober 2008 - 02:04 Der er 4 kommentarer

Måned og år fra dato

Hej,

creationTime fra nogle filer giver mig lidt bøvl.

c# koden ser såldes ud:
-------------------------
      ArrayList values = new ArrayList();
        ArrayList Months = new ArrayList();

        DirectoryInfo di = new DirectoryInfo(Server.MapPath("/fromphone/"));
        FileInfo[] files = di.GetFiles("*.*");
       
        DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath("/fromphone/"));
        foreach (FileInfo f3 in dirInfo.GetFiles("*.*"))
        {
            DateTime dtMonth = f3.CreationTime;
            String strMonth = dtMonth.Month.ToString("MMMM");
            Months.Add(strMonth);
            values.Add(f3);
        }
        Array.Sort(files, CompareDates);

        Repeater1.DataSource = files;
        Repeater1.DataBind();
        Repeater2.DataSource = Months;
        Repeater2.DataBind();
-----------------------
Hertil bruger jeg en repeater:
        <asp:Repeater id="Repeater2" runat="server">
            <ItemTemplate>
              <%# DataBinder.Eval(Container.DataItem, "Name", "{0:MMMM}")%> <br />
            </ItemTemplate>
        </asp:Repeater>
------------------------

Får desværre følgende fejl:
DataBinding: 'System.String' does not contain a property with the name 'Name'.

Hvor ligger fejlen?
Hvordan kan jeg også få året udlæst?
Avatar billede arne_v Ekspert
19. oktober 2008 - 04:22 #1
Repeater2.DataSource er en ArrayList af String som allerede er formateret til
MMMM. Derfor kan du ikke formatere en property Name på den til MMMM.
Avatar billede arne_v Ekspert
19. oktober 2008 - 04:38 #2
Eksempel:

<%@ import namespace="System.Collections.Generic" %>
<html>
<head>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
    List<DateTime> lstone = new List<DateTime>();
    List<String> lsttwo = new List<String>();
    for(int i = 0; i < 5; i++)
    {
        DateTime dt = DateTime.Now.AddDays(i * 30);
        lstone.Add(dt);
        lsttwo.Add(dt.ToString("MMMM"));
    }
    repone.DataSource = lstone;
    repone.DataBind();
    reptwo.DataSource = lsttwo;
    reptwo.DataBind();
}
</script>
</head>
<body>
<form runat=server>
    <table border>
        <asp:Repeater id="repone" runat="server">
            <ItemTemplate>
                <tr>
                <td><%# DataBinder.Eval(Container.DataItem, "Month") %></td>
                <td><%# ((DateTime)Container.DataItem).ToString("MMMM") %></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
    <table border>
        <asp:Repeater id="reptwo" runat="server">
            <ItemTemplate>
                <tr>
                <td><%# Container.DataItem %></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
</form>
</body>
</html>
Avatar billede arne_v Ekspert
28. oktober 2008 - 02:27 #3
OK ?
Avatar billede arne_v Ekspert
19. januar 2009 - 02:18 #4
?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester