21. marts 2007 - 12:19Der er
4 kommentarer og 1 løsning
Æ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)
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...
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.
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.