2015-06-09 111 views
0

我一直堅持這個問題幾個小時,似乎無法弄清楚。我有一個從sql數據源填充的gridview我給出了這張表: enter image description here如何使用下拉列表從存儲過程篩選gridview?

我想添加一個自定義的下拉列表,數字爲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> 
+0

你可以嘗試網格綁定到代碼隱藏一個數據表,而不是到sqldatasource,並根據選擇過濾該數據表。 – JLane

回答

0

真的不能告訴你,如果想自定義下拉列表添加到網格或含電網的形式。你可以在你的數據適配器上創建自定義填充,但如果是我,我會將數據轉儲到數據表中,並對其運行linq查詢以基於下拉列表獲取所需的值,或者使用DataView並轉儲數據一旦過濾就回到原始表中。祝你好運。

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> 

Basic代碼(代碼隱藏或服務器腳本標記):

'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