2016-04-13 3 views
1

グリッドビュー(GridView1)を4つのドロップダウンリストを使用してフィルタリングする必要があります 今は最初の2つの選択肢だけをフィルタリングしようとしています。SQL&cmd.Parametersでグリッドビューをフィルタリングする

DdlVendor DdlStore私はSQLクエリを使用して、それを達成しています

 string query = "Select DISTINCT *, dbo.getsource(version, store_account) as source " + 
         " FROM TABLENAME " + 
         " WHERE ([email protected] or @name = '') " + 
         " and ([email protected] or @Sname = '') " + 
         " and canceled = 0 " + 
         " and (trans_date between @start and @end) and User_id not in (45493,43020,45491) and internal_use = 0 " + 
         " order by " + sort + " "; 

あなたは何をすべての余分なペテンを迷っている場合、フィルタは現在、弊社から送信されたすべてのテストの注文を取り出しますです。

using (SqlCommand cmd = new SqlCommand(query)) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) 
      { 
       cmd.Connection = con; 
       using (DataTable dt = new DataTable()) 
       { 
        cmd.Parameters.AddWithValue("@name", DdlVendor.SelectedIndex > 0 ? DdlVendor.SelectedValue : ""); 
        cmd.Parameters.AddWithValue("@Sname", DdlStore.SelectedIndex > 0 ? DdlStore.SelectedValue : ""); 
        cmd.Parameters.AddWithValue("@start", start); 
        cmd.Parameters.AddWithValue("@end", end); 
        sda.Fill(dt); 
        GridView1.DataSource = dt; 
        GridView1.DataBind(); 

@Nameと@Snameは、最初の2つのドロップダウンリストに使用しているものです。問題は、値を選択して適用すると、GridViewがエラーなしで空白になります。

目的は、各ドロップダウンリストで選択された値によって、グリッドビューに表示されているものをフィルタリングすることです。

あなたの能力を最大限引き出すために必要な質問を明確にします。

はここに私のDropDownListsの1

<asp:DropDownList ID="DdlVendor" AppendDataBoundItems="True" runat="server" CssClass="form-control ftxt" PropertyName="SelectedValue" DataSourceID="SqlDataSource1" DataTextField="Name" DataValueField="Dist_num" AutoPostBack="True"> 
      <asp:ListItem Text="ALL" Value=""/> 
     </asp:DropDownList> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DATABASE %>" SelectCommand="SELECT DISTINCT [Name], [Dist_num] FROM [VIEWNAME]"></asp:SqlDataSource> 

ここでは一例としてBoundfieldと私のGridViewの

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" Width="100%" CssClass="main-table" AutoGenerateColumns="False"> 

<asp:BoundField DataField="Name" HeaderText="Vendor" ItemStyle-Width="80px" SortExpression="Name" /> 
+1

" and ([email protected] or @Sname = '') " + 

と同じGridViewの再バインドが、それは通常、失敗した選択を意味空にすると。あなたは強制入力でselectステートメントをテストしましたか?変数を宣言して設定してSSMSで実行していますか? – fnostro

+0

私はそれを考えていません。私は通常、テーブルとビューにアクセスする権限を持っていません。私は私に与えられたものだけを使う。私はそれを撃つことができます。 –

答えて

0

だ私は解決策を見つけました!

アルファベットの値を数値として保存しようとしていたたびに、美しく

"WHERE ([email protected] or @name = '') " + 

" WHERE ([email protected] or @name = '') " + 

にGridViewのフィルタを変更することにより、だから、

。 2番目のクエリ

" and ([email protected] or @Sname = '') " + 
関連する問題