Oprettet ons. d. 21. marts 2007 kl. 12:19:39

verakso
verakso (18.844 point. Point ude: 512)

Ændre på filnavn i datagridview

Denne er oprindeligt postet på dotnetforum.dk, men da der ikke rigtigt er kommet noget feedback endnu poster jeg den også her.

Måske der alligevel sidder flere ASP.NET kyndige her, end på dotnetformum.dk ;)



Jeg har en liste af filer der listes i et DataGrid

DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(@"~\images").ToString();
giffList.DataSource = dirInfo.GetFiles("*.gif");
giffList.DataBind();

Filnavne er noget i stil med blahblah_referencenr.gif og det jeg gerne vil opnå er at kunne liste referencenr, blahblah og filnavnet hver for sig i et DataGrid (eller ligende for at kunne sortere filerne)

Jeg har forsøgt denne, men det virker ikke helt:

<asp:DataGrid runat="server" id="giffList" AutoGenerateColumns="false" AllowSorting="true">
<Columns>
<asp:TemplateColumn HeaderText="Ref nr.">
<ItemTemplate>
<%# Eval("Name").ToString().Substring((Eval("Name").ToString().LastIndexOf("_")+1),Eval("Name".ToString().LastIndexOf("."))) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" HeaderText="File Name" />
<asp:BoundColumn DataField="LastWriteTime" HeaderText="Last Write Time" ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" />
<asp:BoundColumn DataField="Length" HeaderText="File Size" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:#,### bytes}" />
</Columns>
</asp:DataGrid>

Så, hvordan kan jeg undervejs ændre på de data jeg ønsker at liste, der må være en ret nem og simpel måde jeg har overset.

Når dette er løst, skal jeg så blot lige hitte ud af, hvordan jeg kan laven en event der gør at når man flytter musemarkøren over en række, så vises selve gif billedet i et <DIV> layer, men den tid den udfordring...

Skrevet ons. d. 21. marts 2007 kl. 13:12:24| #1

snepnet
snepnet (87.110 point)
Du gøre det sådan som du har taget tilløb til, hvor jeg ville foreslå dig at lave en lille metode der returner dig det du ønsker - istedet for at fedte med det i din markup.

Du kunne også gå lidt videre med det (såfremt det er en liste du har brug for flere steder - måske ikke engang udelukkende i forbindelse med præsentationen), og bygge det så du har enkelt adgang til informationen:

Hvis det du ønsker er et grid der ser sådan her ud:
<asp:DataGrid runat="server" id="giffList" AutoGenerateColumns="false" AllowSorting="true">
    <Columns>
        <asp:BoundColumn DataField="Prefix" HeaderText="Prefix" />
        <asp:BoundColumn DataField="NameWithoutPrefix" HeaderText="Name" />
        <asp:BoundColumn DataField="Extension" HeaderText="Extension" />
        <asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" HeaderText="File Name" />
        <asp:BoundColumn DataField="LastWriteTime" HeaderText="Last Write Time" ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" />
        <asp:BoundColumn DataField="Length" HeaderText="File Size" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:#,### bytes}" />
    </Columns>
</asp:DataGrid>

Altså med de respektive oplysninger i kolonner for sig - kunne du lave sådan noget som det her:

DirectoryInfo dirInfo = new DirectoryInfo(@"C:\giffer");
giffList.DataSource = new SpecialFileInfoCollection(dirInfo.GetFiles("*.gif"));
giffList.DataBind();

Hvor din specialfilecollection ser sådan her ud:
public class SpecialFileInfoCollection : List<SpecialFileInfo>
{
    public SpecialFileInfoCollection(FileInfo[] files)
    {
        foreach (FileInfo file in files)
        {
            this.Add(new SpecialFileInfo(file));
        }
    }
}

Og så mangler du så bare din egen SpecialFileInfo-type:
public class SpecialFileInfo
{
    private FileInfo m_File;

    public SpecialFileInfo(FileInfo file)
    {
        m_File = file;
    }

    public string Extension
    {
        get { return m_File.Extension.Remove(0,1); }
    }

    public DateTime LastWriteTime
    {
        get { return m_File.LastWriteTime; }
    }


    public long Length
    {
        get { return m_File.Length; }
    }

    public string Prefix
    {
        get { return m_File.Name.Remove(m_File.Name.IndexOf("_")); }
    }

    public string Name
    {
        get { return m_File.Name; }
    }

    public string NameWithoutPrefix
    {
        get
        {
            int start = m_File.Name.IndexOf("_")+1;
            int cutlength = m_File.Name.IndexOf(".") - start;
            return m_File.Name.Substring(start, cutlength);
        }
    }
}

Så kan du pakke al dillerdalleret ind i den - så du slipper for at bikse med det i andre sammenhænge.

Du kan jo lige skrive hvad du helst vil - ovenstående eksemple burde virke, såfremt dine filer overholder den navnekonvention du har oplyst.

Mvh

Skrevet man. d. 06. august 2007 kl. 14:09:30| #2

verakso
verakso (18.844 point)
Jeg kommer tilsyneladene ikke ret tit forbi...

Men snepnet, smid et svar - det virker rigtigt godt.

Det driller dog lidt, med at få sortering på gridviews til at virke, men eller virker det fint

Skrevet man. d. 24. september 2007 kl. 23:09:21| #3

verakso
verakso (18.844 point)
Halo snepnet er du der?
Smid et svar så jeg kan lukke

Skrevet tir. d. 29. januar 2008 kl. 12:54:39| #4

verakso
verakso (18.844 point)
Hallo sepnet - kan jeg lukke eller har du for travlt i dit nye job?

Skrevet ons. d. 30. januar 2008 kl. 21:28:54| #5

snepnet
snepnet (87.110 point)
Et svar kommer her :o)
Mvh

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

GridView og RowCommand

Oprettet den 22. maj 2012 kl. 17.34
faran giver 30 point for svar | Giv et svar »

Flere betingelser i repeater.

Oprettet den 15. maj 2012 kl. 21.45
fuldstop giver 60 point for svar | Giv et svar »

kombinere code behind og Javascript

Oprettet den 6. maj 2012 kl. 09.02
tjacob giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger