我正在尝试对列出目录文件的网格视图进行排序。
我尝试过以各种不同的方式从资源中进行排序,比如:
http://forums.asp.net/t/963636.aspx?Default+sort+order+in+GridView使用gridview asp.net进行排序和分页http://forums.asp.net/t/1076872.aspx?Gridview+如何+to+find+a+列+by+it+s+列+名称+而不是+it+s+单元格+索引+http://forums.asp.net/t/963636.aspx?Default+sort+order+in+GridView
但是,每次重新加载页面时,文件都不是按升序排列的。
我希望能够按文件的"值"[列:文件名]排序,因为这会给我想要的结果,但什么都不起作用。
我还尝试过VB.NET按字母数字对目录中的文件进行排序,比如:
For Each filePath As String In filePaths.OrderBy(files)
files.Add(New ListItem(Path.GetFileName(filePath), filePath))
'files.Add(New ListItem(Path.GetFileName(filePath)
Next
但是由于括号内的信息是错误的,所以从线CCD_。
有什么建议吗?
仅供参考:出于安全目的,Directory.GetFiles
的路径是假的
Dim filePaths() As String = Directory.GetFiles("\......uploadsattachments")
Dim files As List(Of ListItem) = New List(Of ListItem)
For Each filePath As String In filePaths
files.Add(New ListItem(Path.GetFileName(filePath), filePath))
Next
DisplaySup.DataSource = files
DisplaySup.DataBind()
DisplaySup.Sort("File Name", System.Web.UI.WebControls.SortDirection.Ascending)
'If [String].IsNullOrEmpty(DisplaySup.SortExpression) Then
'DisplaySup.Sort("SortExpression", SortDirection.Ascending)
'DisplaySup.DataBind()
'End If
HTML
<asp:GridView ID="DisplaySup" runat="server" align="center" AutoGenerateColumns="False" BorderColor="Black" BorderStyle="Solid" Font-Size="Small">
<Columns>
<asp:TemplateField HeaderText = "Delete File" SortExpression="Value">
<ItemTemplate>
<asp:button ID = "btnDelete" cssClass = "submit-btn small" Text = "Delete" CommandArgument = '<%# Eval("Value") %>' runat = "server" OnClick = "DeleteFile" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText = "File Name" SortExpression="Value">
<ItemTemplate >
<asp:LinkButton ID="lnkDownload" Text = '<%# Eval("Value").ToString().Substring(39) %>' CommandArgument = '<%# Eval("Value") %>' runat="server" OnClick = "DownloadFile"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#BDBDAE" Font-Underline="False"
CssClass="linkNoUnderline" HorizontalAlign="Left" />
</asp:GridView>
更新:我还尝试了下面的GridView排序问题示例,但网格视图再次不排序
找到了解决问题的方法。
我引用了:排序目录.GetFiles()
并执行以下操作对目录进行预排序,然后在我的网格视图中列出文件:
Dim filePaths() As String = Directory.GetFiles("\...uploadsattachments")
'Sort the directory
Dim FilesStr() As String
FilesStr = filePaths
Array.Sort(FilesStr)
'Get each file
Dim files As List(Of ListItem) = New List(Of ListItem)
For Each filePath As String In filePaths
files.Add(New ListItem(Path.GetFileName(filePath), filePath))
Next
DisplaySup.DataSource = files
DisplaySup.DataBind()