2016-04-13 61 views
1

4 DropDownLists kullanılarak filtrelenmesi gereken bir Gridview (GridView1) var Şu anda sadece ilk iki seçime göre filtreleme yapmaya çalışıyorum.Gridview Filtrelemesi w/SQL & cmd.Parameters

DdlVendor DdlStore bir SQL sorgusu kullanarak yönetmeleridir ediyorum

 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 + " "; 

ne tüm ekstra maskaralık merak ediyorsanız eğer filtre şu anda, bizim tarafımızdan gönderilen tüm test emirleri alır olduğunu.

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 ve @Sname, ilk iki açılır menü için kullanıyorum. Sorun, değerlerimi seçerek ve onları uygulayarak GridView'ın hata yapmadan boş kalmasıdır.

hedefi her dropdownlist seçilen değerlere göre GRIDVIEW gördüklerinizi filtre etmektir.

benim yeteneklerini en iyi Sorularınızı açıklığa kavuşturmak gerekir. Benim DropDownLists

<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> 

ait

İşte

olan tek İşte çözüm buldu

<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

ikinci sorguda

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

ile aynı zaman bir GridView genellikle başarısız seçme anlamına boş rebinds. Zorunlu girişlerle seçim ifadesini test ettiniz mi? yani bildirilen ve ayarlanan değişkenler ile SSMS'de çalıştırılıyor mu? – fnostro

+0

Bunu düşünmedim. Genellikle Tablolara ve Görünümlere erişim iznim yok. Sadece bana verilen şeyi kullanıyorum. Ben ateş edebilirim. –

cevap

0

örnek olarak bir Boundfield ile benim GridView var!

süre boyunca

bir sayısal değer olarak bir alfabetik değeri saklamak için çalışıyorum.

Yani Gridview filtreler güzelce

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

için

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

değiştirerek.

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