使用文本框和按钮过滤gridview以使用列表填充gridview

时间:2016-08-26 05:22:12

标签: asp.net .net vb.net list gridview

我目前正在忙着创建一个简单的网站。文件被复制到我的FTP服务器上。在我的网页上有一个文本框,按钮和gridview。

一切正常,当我加载我的网站时,在你搜索某些内容之前看不到gridview。当我没有搜索按钮的搜索代码时,我编码将每个文件加载到网格视图中。

我现在想要在单击搜索按钮时添加一些过滤,但我不知道如何做到这一点,而Internet只显示如何使用数据库,但我正在使用New List对象。

请参阅下面的示例代码。 (这当前将所有文件添加到gridview中)

 Dim filePaths() As String = Directory.GetFiles(Server.MapPath("~/Uploads/IIC/"))
    Dim dt As New DataTable
    dt.Columns.Add("FileName", GetType(String))
    dt.Columns.Add("FilePath", GetType(String))
    dt.Rows.Clear()
    For Each filePath As String In filePaths
        dt.Rows.Add(Path.GetFileName(filePath), filePath)
    Next

    If GridView2.Columns.Count > 2 Then
        For x = 2 To GridView2.Columns.Count - 1
            GridView2.Columns.RemoveAt(2)
        Next
    End If


    Dim FileNameCol As New BoundField
    Dim FilePathCol As New BoundField
    FileNameCol.DataField = "FileName"
    FileNameCol.HeaderText = "FileName"
    FilePathCol.DataField = "FilePath"
    FilePathCol.DataField = "FilePath"

    GridView2.Columns.Add(FileNameCol)
    GridView2.Columns.Add(FilePathCol)

    GridView2.DataSource = dt.Select("FileName LIKE '%" & TextBox1.Text & "%'")
    GridView2.DataBind()

任何向我展示如何过滤gridview的帮助都会对我有所帮助,因为我以前没有真正使用过列表。

注意:gridview不使用数据库

Gridview2的设计器代码

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" PageSize="10" AllowPaging="true" 
    EmptyDataText = "No files uploaded" Width="251px">
<Columns>
    <asp:BoundField DataField="Text"  HeaderText="FileName" />
    <asp:TemplateField>
        <ItemTemplate>
            <asp:LinkButton ID="lnkDownload" Text = "Download" CommandArgument = '<%# Eval("Value") %>' runat="server" OnClick = "DownloadFile"></asp:LinkButton>
        </ItemTemplate>
    </asp:TemplateField>

</Columns>

1 个答案:

答案 0 :(得分:0)

您可以使用DataTable来实现这一目标。

它有一个.Select()函数,您可以在其中过滤数据表中的特定记录(如查询中的WHERE部分,而是从数据库中,您在数据表中使用它)

试试这个:

    Dim filePaths() As String = Directory.GetFiles(Server.MapPath("~/Uploads/IIC/"))
    Dim dt As New DataTable
    dt.Columns.Add("FileName", GetType(String))
    dt.Columns.Add("FilePath", GetType(String))
    dt.Rows.Clear()
    For Each filePath As String In filePaths
        dt.Rows.Add(Path.GetFileName(filePath), filePath)
    Next

    If GridView2.Columns.Count > 1 Then
         For x = 1 To GridView2.Columns.Count - 1
             grdApproval.Columns.RemoveAt(1)
         Next
    End If


    Dim FileNameCol As New BoundField
    Dim FilePathCol As New BoundField
    FileNameCol.DataField = "FileName"
    FileNameCol.HeaderText = "FileName"
    FilePathCol.DataField = "FilePath"
    FilePathCol.HeaderText = "FilePath"

    GridView2.Columns.Add(FileNameCol)
    GridView2.Columns.Add(FilePathCol)

    GridView2.DataSource = dt.Select("FileName LIKE '%" & txtYourSearchBox.Text & "%'")
    GridView2.DataBind()