向Gridview的一个侦听器列添加过滤器



我想创建一个过滤器到我的一个标题列[Carrier],这里是我创建的gridview的代码:

index.aspx:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="cr_OnSelectedIndexChanged"
                 DataSourceID="SqlDataSource1" DataTextField="CARRIER" DataValueField="CARRIER"> 
             </asp:DropDownList>
             <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                 ConnectionString="<%$ ConnectionStrings:MybaseConnectionString %>" 
                 SelectCommand="SELECT DISTINCT [CARRIER] FROM [TABLE]">
                 </asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" Height="150px" Width="284px">
</asp:GridView>

index.aspx.vb

Inherits System.Web.UI.Page
    Dim cx As New SqlConnection("Data Source=.SQLEXPRESS;database=Mybase;Integrated Security=True;")
    Dim cmd As New SqlCommand
    Dim da As New SqlDataAdapter
    Dim dt As New DataTable
    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
            cmd.Connection = cx
            cmd.CommandText = "select cl1, Carrier, cl2, cl3 from table"
            da = New SqlDataAdapter(cmd)
            da.Fill(dt)
            GridView1.DataSource = dt
            GridView1.DataBind()
        End Sub
   Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
End Sub

任何人都可以帮忙!谢谢你. .

取一个文本框

<asp:TextBox runat="server" ID="txtSearch"/>  

on button click event

 Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
            cmd.Connection = cx
            cmd.CommandText = "select cl1, Carrier, cl2, cl3 from table where Carrier='"+txtSearch.Text+"'"
            da = New SqlDataAdapter(cmd)
            da.Fill(dt)
            GridView1.DataSource = dt
            GridView1.DataBind()
        End Sub

我建议在您希望过滤的列(在您的示例中是Carrier)的标题中放置一个下拉列表。然后可以连接下拉列表的OnSelectedIndexChanged事件来处理列数据的实际过滤。下面是这个技术的一个较早但仍然相关的例子:

ASP。. NET GridView列过滤

假设Carrier是类型为nvarchar(200)的字段,并且应该在用户单击Button1(在标记中不可见)之后进行过滤,则方法Button1_Click的主体应该看起来像:

    Dim sql As String = "select cl1, Carrier, cl2, cl3 from table where Carrier = @Carrier"
    Using cn As New SqlConnection("Data Source=.SQLEXPRESS;database=Mybase;Integrated Security=True;"), _
      cmd As New SqlCommand(sql, cn)
      cmd.Parameters.Add("@Carrier", SqlDbTypes.NVarChar, 200).Value = DropDownList1.SelectedValue
      da = New SqlDataAdapter(cmd)
      da.Fill(dt)
      GridView1.DataSource = dt
      GridView1.DataBind()
    End Using

您可能需要查看DataGridRowFilter属性。请看这个链接,其中包括示例代码。

相关内容

最新更新