如何使用下拉列表从存储过程中过滤gridview?

时间:2015-06-09 14:50:05

标签: c# jquery asp.net vb.net gridview

我一直坚持这个问题几个小时,似乎无法搞清楚。我有一个gridview我从一个SQL数据源填充taht给我这个表: enter image description here

我想添加一个自定义下拉列表,其中包含数字1,5,7,以按最小动物数量过滤此数据。下面是下拉代码。

  Minimum Animals:
          <asp:DropDownList ID="ddlMinimumAnimals" runat="server" 
            AutoPostBack = "True" AppendDataBoundItems = "True">         
              <asp:ListItem Text = "1" Value = "1"></asp:ListItem>
              <asp:ListItem Text = "5" Value = "1"></asp:ListItem>
              <asp:ListItem Text = "7" Value = "1"></asp:ListItem>           
        </asp:DropDownList>

我只想在单击下拉列表时将表格过滤到最小,我找到的所有教程都不使用存储过程,所以我不确定如何绑定数据。

Gridview代码:

     <asp:GridView ID="GridView2" class="grids" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" AllowSorting="True" AllowPaging="True">
        <Columns>
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Animals" HeaderText="Animals" SortExpression="animals" />
            <asp:BoundField DataField="Company" HeaderText="Company" SortExpression="company" />
        </Columns>
    </asp:GridView>

2 个答案:

答案 0 :(得分:0)

无法确定是否要将自定义下拉列表添加到网格或包含网格的表单中。您可以在数据适配器上创建自定义填充,但如果是我,我会将数据转储到数据表,并根据下拉列表运行linq查询以获取所需的值,或者我使用了DataView并在过滤后将数据转储回原始表中。祝你好运。

答案 1 :(得分:0)

您需要编写一些代码来修改数据源并将两个控件挂钩在一起。它来自存储过程这一事实没有任何区别。

控制:

  <asp:DropDownList ID="ddlMinimumAnimals" runat="server" AutoPostBack = "True">         
      <asp:ListItem Text = "1" Value = "1"></asp:ListItem>
      <asp:ListItem Text = "5" Value = "1"></asp:ListItem>
      <asp:ListItem Text = "7" Value = "1"></asp:ListItem>           
  </asp:DropDownList>

 <asp:GridView ID="GridView2" class="grids" runat="server" AutoGenerateColumns="False" AllowSorting="True" AllowPaging="True">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        <asp:BoundField DataField="Animals" HeaderText="Animals" SortExpression="animals" />
        <asp:BoundField DataField="Company" HeaderText="Company" SortExpression="company" />
    </Columns>
</asp:GridView>

基本代码(在代码隐藏或服务器脚本标记中):

'Im assuming your going to run this on every page load'
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Page.IsPostBack() Then

        'use this number to limit your query via SQL-TOP-Clause or Limit or whatever'
        Dim minAnimals As Integer = CInt(ddlMinimumAnimals.SelectedValue)

        'get your data here ... lets assume you call it "yourData"'

        ' then bind your data to the gridview.'
        GridView2.DataSource = yourData
        GridView.DataBind()

    End If

End Sub